我想提出以下聲明在shell腳本:proxy_set如何在Linux shell腳本中聲明?
declare -x https_proxy="https://192.168.220.4:8080/"
然後我執行它象下面。
$ ./proxy_set
但「出口」顯示什麼都沒有發生。
而在另一種方式,如果我執行這樣的:
$ source proxy_set
然後「出口」顯示它的作品!
我的問題是如何讓它工作,無需額外的「源」cmd? 謝謝!
我想提出以下聲明在shell腳本:proxy_set如何在Linux shell腳本中聲明?
declare -x https_proxy="https://192.168.220.4:8080/"
然後我執行它象下面。
$ ./proxy_set
但「出口」顯示什麼都沒有發生。
而在另一種方式,如果我執行這樣的:
$ source proxy_set
然後「出口」顯示它的作品!
我的問題是如何讓它工作,無需額外的「源」cmd? 謝謝!
你不能。在環境中設置變量只會影響該shell以及它所產生的未來任何孩子的環境;沒有辦法影響父shell。當您在沒有source
(或.
)的情況下運行它時,會啓動一個全新的外殼,然後在該外殼的環境中設置該變量,然後該外殼將退出並在其環境中運行。
source
讀取命令並在當前shell中執行它們,就像您鍵入它們一樣。
所以如果你想在腳本中設置環境變量,你必須要source
吧。或者,您可以使用生成shell命令的命令作爲輸出,而不是運行它們,然後父級可以評估命令的輸出。像ssh-agent
這樣的東西使用這種方法。
儘量只加:
export https_proxy="https://192.168.220.4:8080/"
然後正常執行腳本。
似乎它仍然無法正常工作。 – 2012-07-07 15:53:24
謝謝您的詳細解釋!這非常有用。 – 2012-07-07 15:54:52