2012-07-07 107 views
0

我想提出以下聲明在shell腳本:proxy_set如何在Linux shell腳本中聲明?

declare -x https_proxy="https://192.168.220.4:8080/" 

然後我執行它象下面。

$ ./proxy_set 

但「出口」顯示什麼都沒有發生。

而在另一種方式,如果我執行這樣的:

$ source proxy_set 

然後「出口」顯示它的作品!

我的問題是如何讓它工作,無需額外的「源」cmd? 謝謝!

回答

3

你不能。在環境中設置變量只會影響該shell以及它所產生的未來任何孩子的環境;沒有辦法影響父shell。當您在沒有source(或.)的情況下運行它時,會啓動一個全新的外殼,然後在該外殼的環境中設置該變量,然後該外殼將退出並在其環境中運行。

source讀取命令並在當前shell中執行它們,就像您鍵入它們一樣。

所以如果你想在腳本中設置環境變量,你必須要source吧。或者,您可以使用生成shell命令的命令作爲輸出,而不是運行它們,然後父級可以評估命令的輸出。像ssh-agent這樣的東西使用這種方法。

+0

謝謝您的詳細解釋!這非常有用。 – 2012-07-07 15:54:52

0

儘量只加:

export https_proxy="https://192.168.220.4:8080/" 

然後正常執行腳本。

+0

似乎它仍然無法正常工作。 – 2012-07-07 15:53:24