为何Makefile的export会给变量额外添加一个`=`?
Makefile导出变量出现额外
=的原因及解决方法 问题原因
你遇到的额外=是因为Make的变量展开机制导致的:
当你写export $(shell echo "truman=name")时,Make会先执行shell命令获取字符串truman=name,随后会对这个字符串中的Make变量进行展开。如果你的Make环境(或当前shell传递给Make的变量)中存在名为name的变量,且其值为=,那么truman=name会被展开为truman=name=——把变量name的值=替换进去后,最终导出的truman变量值就变成了name=,所以执行export命令时会看到truman="name="的输出。
另外,这种通过shell函数生成变量赋值语句的写法本身就多余,还容易触发意料之外的变量展开问题。
解决方法
直接在Makefile中显式定义并导出变量,绕过Make的变量展开问题:
export truman=name env: export
执行make env后,就能得到正确的export truman="name"输出。
内容的提问来源于stack exchange,提问作者Truman Purnell
相关产品推荐
相关产品推荐

