当我们使用make时,我们可以在像CC=clang make这样的命令之前设置CC来设置环境变量。所以我也测试了echo,结果如下:
> export CC=123
> CC=xxx echo $CC
123为什么结果不是xxx?
发布于 2020-07-03 12:34:13
您可以在bash手册中阅读simple command expansion的工作原理。
作为parameter expansion的一部分,$CC的扩展发生在步骤2中。这将用123替换$CC,因此要执行的命令变成
CC=xxx echo 123仅在步骤4中将xxx赋值给CC。因此,总体效果是将变量CC设置为等于xxx,添加到环境中,然后执行命令echo 123。然后,输出当然是123。由于命令echo 123不使用环境变量CC,因此CC的设置不起作用。
因此,为了使变量赋值影响参数扩展,需要像前面的命令CC=xxx ; echo $CC一样进行赋值。如果不希望当前shell的环境受到影响,可以在子shell:( CC=xxx ; echo $CC )中运行这两个命令,之后echo $CC将再次打印123。
https://stackoverflow.com/questions/62708341
复制相似问题