首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么"CC=xxx echo $CC“不能更改环境变量

为什么"CC=xxx echo $CC“不能更改环境变量
EN

Stack Overflow用户
提问于 2020-07-03 12:05:04
回答 1查看 1.4K关注 0票数 0

当我们使用make时,我们可以在像CC=clang make这样的命令之前设置CC来设置环境变量。所以我也测试了echo,结果如下:

代码语言:javascript
复制
> export CC=123
> CC=xxx echo $CC
123

为什么结果不是xxx

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-03 12:34:13

您可以在bash手册中阅读simple command expansion的工作原理。

作为parameter expansion的一部分,$CC的扩展发生在步骤2中。这将用123替换$CC,因此要执行的命令变成

代码语言:javascript
复制
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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62708341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档