bash - 为什么bash $()可以设置环境变量?

标签 bash docker

来自 Docker 文档 - https://docs.docker.com/installation/mac/#install-boot2docker ,为什么$()可以设置环境变量

显示 Docker 客户端的环境变量。

$ boot2docker shellinit

要在 shell 中设置环境变量,请执行以下操作:

$ $(boot2docker shellinit)

我的问题是:为什么$(boot2docker shellinit)可以设置环境变量?

最佳答案

Why can $(boot2docker shellinit) set environment variables?

查看以下函数(但它可以是命令或脚本):

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"

关于bash - 为什么bash $()可以设置环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29060066/

相关文章:

docker - 如何访问NodeMon登录正在运行的Docker容器

macos - 定位命令在 Mac 上的文档文件夹中找不到任何内容

linux - 了解 LINUX 或 AIX 系统上的 pts/1 服务

docker - 为什么 "Data Space Used"+ "Data Space Available"!= "Data Space Total"在 docker 中?

Docker .NET Core - 解决方案中的多个项目

docker - 打开第二个 vscode devcontainer 会关闭第一个

windows - Windows 和 Linux 上的 GUI 应用程序

bash - 是否可以从子 shell 获取退出代码?

linux - 关于 ls、dir 和 tee 的混淆

django - Dockerfile添加添加错误的目录