我想使用ksh腳本來設置一些環境變量,我的makefile稍後會使用它。我試圖做:使用shell腳本導出環境變量
setup:
. myscript
但它給了我像[[: not found
錯誤。
有沒有辦法使用外部腳本加載make的環境變量?
我想使用ksh腳本來設置一些環境變量,我的makefile稍後會使用它。我試圖做:使用shell腳本導出環境變量
setup:
. myscript
但它給了我像[[: not found
錯誤。
有沒有辦法使用外部腳本加載make的環境變量?
你可以在Makefile中change the shell:
SHELL = /usr/bin/ksh # Or whatever path it's at
但它可能是一個好主意,腳本轉換爲如果你想讓它工作的順利開展一些與/bin/sh
兼容(理想情況下完全POSIX兼容)在其他平臺上。
請注意,這可能不會按預期工作:由於每個Makefile命令都在其自己的子shell中執行,因此採購myscript
將僅修改本地環境,而不是整個Makefile的一個。
例如:
debug: setup
@echo "*** debug"
export | grep ENVVAR || echo "ENVVAR not found" #(a)
setup:
@echo "*** setup"
export ENVVAR=OK; export | grep ENVVAR || echo "ENVVAR not found" #(b)
export | grep ENVVAR || echo "ENVVAR not found" #(c)
輸出:
$ make debug
*** setup
export ENVVAR=OK; export | grep ENVVAR || echo "ENVVAR not found" #(b)
export ENVVAR='OK'
export | grep ENVVAR || echo "ENVVAR not found" #(c)
ENVVAR not found
*** debug
export | grep ENVVAR || echo "ENVVAR not found" #(a)
ENVVAR not found
正如你可以看到,ENVVAR是發現僅在指令(b)中,但命令(a)和(b)以執行新的,乾淨的環境。