2010-10-18 74 views
0

當我的公司,我有出口3個環境變量,HTTP_PROXY,https_proxy,ALL_PROXY,出口ENV

我寫了一個文件〜/斌/ setproxy這樣

#! /bin/sh 
export http_proxy=http://......:8888 
export https_proxy=http://......:8888 
export all_proxy=http://......:8888 

但當我在bash中執行這個文件時,然後使用env | grep http_proxy,我什麼也沒得到。 但「source〜/ bin/setproxy」起作用,但有沒有辦法縮短它到1個字的命令。 我寫了另外一個文件只有1行,

source ~/bin/setproxy 

,但它不工作。

回答

3

當您執行該腳本時,會生成一個子shell,並在該shell中執行三次導出,當腳本結束時,子shell退出,這就是您沒有看到設置的環境變量的原因。

你可以把這些代碼的功能,比如說在你的.bashrc,並調用,這樣一來就會工作,會出現以下內容:

function setproxy { 
    export http_proxy=http://......:8888 
    export https_proxy=http://......:8888 
    export all_proxy=http://......:8888 
} 
2

我覺得你的問題是,因爲你正在執行要麼:

~/bin/setproxy 

或:

your_other_file_which_sources_setproxy 

這些情況下,他們運行在一個子shell中,這意味着出口是在這個子shell中,而不是你調用它們的shell。

您可以使用source短形式:

. ~/bin/setproxy 

或創建別名:

alias sp='source ~/bin/setproxy' 
.bashrc或其他啓動腳本

這後一種解決方案將允許您只執行:

sp 

做的工作。