Bash 添加使用命令替换的脚本/命令/别名

Bash 添加使用命令替换的脚本/命令/别名,bash,shell,osx-yosemite,command-substitution,Bash,Shell,Osx Yosemite,Command Substitution,我有一个命令,我想能够运行,我通常会运行它时,我的Mac启动。我尝试的方法是在~/.bash\u profile中创建一个别名: alias b2dinit="boot2docker up && $(boot2docker shellinit) && boot2docker ssh 'sudo /etc/init.d/docker restart'" boot2docker shellinit输出一些需要执行的命令。例如: export DOCKER_HOST=

我有一个命令,我想能够运行,我通常会运行它时,我的Mac启动。我尝试的方法是在
~/.bash\u profile
中创建一个别名:

alias b2dinit="boot2docker up && $(boot2docker shellinit) && boot2docker ssh 'sudo /etc/init.d/docker restart'"
boot2docker shellinit
输出一些需要执行的命令。例如:

export DOCKER_HOST=tcp://192.168.59.103:2376
export DOCKER_CERT_PATH=/Users/mkobit/.boot2docker/certs/boot2docker-vm
export DOCKER_TLS_VERIFY=1
我遇到的问题是,当打开一个新shell时,会执行
$(boot2docker shellinit)
,并且还会执行上面的
导出
命令,或者如果boot2docker VM未激活,则会失败


组织此过程(别名、脚本等)的正确方法是什么?使用命令替换是否正确?

在别名周围使用单引号将命令替换推迟到别名执行时,或者在双引号中转义
$

alias b2dinit="boot2docker up && \$(boot2docker shellinit) && boot2docker ssh 'sudo /etc/init.d/docker restart'"
这将意味着在内部
sudo
命令上切换到双引号和/或在单引号中插入和退出(不能在单引号中转义单引号)

alias b2dinit='boot2docker up && $(boot2docker shellinit) && boot2docker ssh "sudo /etc/init.d/docker restart"'
alias b2dinit='boot2docker up && $(boot2docker shellinit) && boot2docker ssh '\''sudo /etc/init.d/docker restart'\'