2011-06-09 69 views
14

我想知道在.bashrc中設置變量時是否需要使用「導出」。BASH:在.bashrc中設置變量時需要「導出」嗎?

在我的測試編輯的.bashrc有

foo=bar 

export foo=bar 

之間沒有什麼區別。在這兩種情況下,登錄後 「回聲$ foo的」 產出 「欄」。

我正在使用Debian Squeeze,如果這很重要。

謝謝你們提前。

回答

11

嘗試創建一個訪問foo變量的shell腳本。

如果fooexport'ed,它將在shell腳本中可見,否則它不會。

+0

我創建了一個包含「'echo $ foo'」的測試腳本。在登錄後運行腳本的兩種情況下,輸出都是「bar」。我瘋了嗎?任何人都可以重現嗎? – casper 2011-06-09 19:07:54

+0

你如何運行腳本? '。/ script'或'。 script'? – 2011-06-09 19:13:08

+0

我通過''。/ script''運行腳本 – casper 2011-06-09 19:27:00

10

超級用戶has this covered

簡短回答:export確保在子進程中設置環境變量。如果您不導出,則只能在相同的流程/交互式會話中使用。

+1

我創建了一個包含「echo $ foo」的測試腳本。在登錄後運行腳本的兩種情況下,輸出都是「bar」。我瘋了嗎?任何人都可以重現嗎? – casper 2011-06-09 18:28:23

5

這是可取的,因爲導出的變量傳遞給子進程(從該shell啓動的程序)。如果沒有export命令,那些變量只適用於shell本身,而不適用於從shell啓動的進程