2013-02-07 78 views
3

腳本完成運行後,如何保留從shell腳本中設置的環境變量?shell腳本完成後保留環境變量

+0

使用導出命令:http://stackoverflow.com/questions/7328223/unix-export-command – congusbongus

+0

將它們添加到文件'〜/ .bash_profile'。 – 2013-02-07 02:09:29

+2

@CongXu'export'將變量傳遞給孩子,而不是父母。 – Beta

回答

7

這是不可能通過運行腳本。該腳本產生了它自己的子shell,當腳本完成時它會丟失。

爲了保存export s表示你可能在你的腳本,你可以叫他們這樣,這將它們添加到當前環境:

. myScript.sh

通知的.之間的空間myScript.sh部分。

1

運行腳本如下:

source <script> 

-OR- 

. <script> 

這將在當前shell中運行的腳本,在當前shell定義變量。腳本完成後,變量將保留在當前shell中。

1

環境變量存在每個進程私有的環境。 shell將其導出的變量COPY傳遞給它的孩子作爲他們的環境,但是他們沒有辦法將他們的環境傳遞迴父母或其子進程以外的任何進程。 您可以打印這些變量並將它們加載到父項中。 或者已經提到過,你可以使用「源腳本」或者「腳本」在當前shell中運行你的腳本(如果你的腳本不在你的PATH中,你可能需要./script)。 有些工具會打印它們的變量,而外殼可以使用反引號來加載它們,如ssh-agent。這樣,無論什麼ssh代理打印將作爲命令運行。如果它打印出像「VAR1 = VAL; VAR2 = VAL2」的東西,可以做你想做的事情。