当使用make时,我们可以在命令之前设置CCCC=clang make
来设置环境变量。所以我也测试了echo,结果如下:
> export CC=123
> CC=xxx echo $CC
123
为什么结果不是xxx
?
您可以在bash手册中阅读简单命令扩展的工作方式。
的膨胀$CC
发生在步骤2中,作为其一部分参数扩展。替换$CC
为123
,因此要执行的命令变为
CC=xxx echo 123
对xxx
to的分配CC
仅发生在步骤4中。因此,总体效果是将变量CC
设置为等于xxx
,将其添加到环境中,然后echo 123
执行命令。输出当然是123
。由于该命令echo 123
未使用任何环境变量CC
,因此的设置CC
无效。
因此,为了使变量分配影响参数扩展,必须将其作为先前的命令完成:CC=xxx ; echo $CC
。如果您不希望当前Shell的环境受到影响,则可以在subshell中运行这两个命令:( CC=xxx ; echo $CC )
,之后echo $CC
将123
再次打印。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句