问题
在巴什中,shell_variable=值 bash child_command使得外壳变量中的环境变量子命令。
这是一个内置 shell(sh 和 bash)功能,用于将 shell 变量提升为子进程中的环境变量,以及类似于 env 命令的功能吗?
试图找到解释这一点的文档,但尚未找到。如果您能提供参考,不胜感激。
霍格.sh
env | grep BUILD_ID
实施例1
BUILD_ID=hoge
bash hoge.sh
[result] (none displayed)
实施例2
BUILD_ID=hoge bash hoge.sh
[Result]
BUILD_ID=hoge
实施例3
env BUILD_ID=hogehoge bash hoge.sh
[Result]
BUILD_ID=hogehoge
参考
答案1
POSIX:部分2.9.1 简单命令
...变量分配应导出到命令的执行环境,并且不应影响当前的执行环境...
也在几个 shell 手册中(搜索“简单命令”)
例子
变量不应影响当前的执行环境:
$ var=33; var=11 echo "$var"; echo "$var"
33
33
变量赋值应导出到执行环境:
$ var=33; var=11 sh -c 'echo "$var"'; echo "$var"
11
33