2012-02-29 79 views
1

我想使用ksh腳本來設置一些環境變量,我的makefile稍後會使用它。我試圖做:使用shell腳本導出環境變量

setup: 
    . myscript 

但它給了我像[[: not found錯誤。

有沒有辦法使用外部腳本加載make的環境變量?

回答

3

你可以在Makefile中change the shell

SHELL = /usr/bin/ksh # Or whatever path it's at 

它可能是一個好主意,腳本轉換爲如果你想讓它工作的順利開展一些與/bin/sh兼容(理想情況下完全POSIX兼容)在其他平臺上。

0

請注意,這可能不會按預期工作:由於每個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)以執行新的,乾淨的環境。