小编wbk*_*ang的帖子

为什么我不能使用变量作为命令的前缀来设置环境变量?

通常,可以通过为命令添加前缀来为命令设置环境变量,如下所示:

hello=hi bash -c 'echo $hello'
Run Code Online (Sandbox Code Playgroud)

我也知道我们可以使用变量来替换命令调用的任何部分,如下所示:

$ cmd=bash
$ $cmd -c "echo hi" # equivalent to bash -c "echo hi"
Run Code Online (Sandbox Code Playgroud)

我很惊讶地发现您不能使用变量作为命令前缀来设置环境变量。测试用例:

$ prefix=hello=hi
$ echo $prefix # prints hello=hi
$ $prefix bash -c 'echo $hello'
hello=hi: command not found
Run Code Online (Sandbox Code Playgroud)

为什么我不能使用变量设置环境变量?前缀部分是特殊部分吗?我能够通过在前面使用 eval 让它工作,但我仍然不明白为什么。我正在使用 bash 4.4。

bash environment-variables variable

11
推荐指数
2
解决办法
2766
查看次数

标签 统计

bash ×1

environment-variables ×1

variable ×1