来自Docker文档 - https://docs.docker.com/installation/mac/#install-boot2docker,为什么$()
可以设置环境变量
显示Docker客户端的环境变量。
$ boot2docker shellinit
要在shell中设置环境变量,请执行以下操作:
$ $(boot2docker shellinit)
我的问题是:为什么$(boot2docker shellinit)
可以设置环境变量?
答案 0 :(得分:1)
为什么
$(boot2docker shellinit)
可以设置环境变量?
查看以下函数(但它可以是命令或脚本):
foo() { echo "export a=b"; }
此命令只执行以下操作:将export a=b
打印到标准输出:
$ foo() { echo "export a=b"; }
$ foo
export a=b
现在,command substitution 允许输出命令来替换命令本身。因此,如果运行$(foo)
,则Bash将首先执行foo
,然后使用该命令的输出来构建命令。在我们的例子中,输出为export a=b
,Bash将执行它:
$ declare -p a
bash: declare: a: not found
$ $(foo)
$ declare -p a
declare -x a="b"
答案 1 :(得分:1)
$(command)
执行command
的输出。所以boot2docker
必须输出如下内容:
export env1=val1
export env2=val2
....
export envN=valN
显示运行boot2docker
时环境变量的值,并在执行此输出时设置它们。