我测试了几个make和有问题的shell中的环境变量不在make文件里面。我不知道我的设置有什么问题。我在我的Mac OS,Redhat和Ubuntu上进行了测试。他们都有相同的行为。我想知道任何人都可以提供帮助。为什么不能拿起环境变量
GNU Make 4.1
这里是我的简单的make文件:
ifdef $(HOME)
$(info $$HOME is $(HOME))
else
$(info $$HOME is undefined)
endif
all :
echo do nothing
当输入使在终端,我得到
$HOME is undefined
echo do nothing
do nothing
回声$ HOME
/Users/myusername
这里是定义从make的手册https://www.gnu.org/software/make/manual/html_node/Environment.html
make中的变量可能来自运行make的环境。每个启动时看到的环境变量都会被转换为具有相同名称和值的make变量。但是makefile中的显式赋值或命令参数会覆盖环境。
其实我正在测试另一个我在$ HOME/.bash_profile中定义的环境变量。我忘了做出口。如果我回显$ MYVARABLE但不在make内部,该变量是可见的。我在测试伪文件中的环境变量的时候犯了另一个错误,就是通过额外的'$'进行测试。感谢丹的回答。 –
是否有一个原因与此链接到make 3.79.1文档?特别是因为这个链接是一个'old-gnu'网址,并且你正在使用一个**很多更新的make版本呢? (十四年半更新确切。) –
没有特别的理由。我刚刚在谷歌搜索,这是谷歌搜索的第一项。制造商的大多数用户必须是专家,他们不再阅读更新的手册。所以旧版本得到最多的宣传。 –