我測試了幾個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版本呢? (十四年半更新確切。) –
沒有特別的理由。我剛剛在谷歌搜索,這是谷歌搜索的第一項。製造商的大多數用戶必須是專家,他們不再閱讀更新的手冊。所以舊版本得到最多的宣傳。 –