1. 程式人生 > >ubuntn下怎麼設定環境變數

ubuntn下怎麼設定環境變數

常見的設定環境變數有以下幾種方法:

(1)、設定臨時環境變數

這時候就可以用export PATH=...:$PATH,例如 export PATH=/home/albert/bin:$PATH

(2)、當前使用者的全域性設定

這時候我們需要開啟~/.bashrc,      sudo gedit ~/.bashrc,

然後在最後面新增一行:  export PATH=/home/albert/bin:$PATH

為了使之生效,終端下輸入source .bashrc

(3)、所有使用者的全域性設定

這時你需要開啟 /etc/profile檔案,用sudo gedit /etc/profile即可,同樣的在最後面加入export PATH=/home/albert/bin:$PATH即可。

在新增完後在終端輸入source profile使之生效。

 測試當前的環境變數

echo $PATH
或
env

使用者登入後加載profile和bashrc的流程如下:

1. /etc/profile
    ->/etc/profile.d/*.sh

2. $HOME/.bash_profile
    ->$HOME/.bashrc
        ->/etc/bashrc

說明: 
bash首先執行/etc/profile指令碼,/etc/profile指令碼先依次執行/etc/profile.d/*.sh 
隨後bash會執行使用者主目錄下的.bash_profile指令碼,.bash_profile指令碼會執行使用者主目錄下的.bashrc指令碼, 
而.bashrc指令碼會執行/etc/bashrc指令碼。 
至此,所有的環境變數和初始化設定都已經載入完成. 
bash隨後呼叫terminfo和inputrc,完成終端屬性和鍵盤對映的設定.

其中PATH這個變數特殊說明一下:

  • 如果是超級使用者登入,在沒有執行/etc/profile之前,PATH已經設定了下面的路徑: 
    /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  • 如果是普通使用者,PATH在/etc/profile執行之前設定了以下的路徑: 
    /usr/local/bin:/bin:/usr/bin

這裡要注意的是:在使用者切換並載入變數,例如su -,這時,如果使用者自己切換自己,比如root使用者再用su - root切換的話,載入的PATH和上面的不一樣. 
準確的說,是不總是一樣.所以,在/etc/profile指令碼中,做了如下的配置:

if [ `id -u` = 0 ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
fi

如果是超級使用者登入,在/etc/profile.d/krb5.sh指令碼中,在PATH變數搜尋路徑的最前面增加/usr/kerberos/sbin:/usr/kerberos/bin 
如果是普通使用者登入,在/etc/profile.d/krb5.sh指令碼中,在PATH變數搜尋路徑的最前面增加/usr/kerberos/bin

在/etc/profile指令碼中,會在PATH變數的最後增加/usr/X11R6/bin目錄 
在HOME/.bashprofile中,會在PATH變數的最後增加HOME/.bashprofile中,會在PATH變數的最後增加HOME/bin目錄

以root使用者為例,最終的PATH會是這樣(沒有其它自定義的基礎上)

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

以alice使用者(普通使用者)為例

/usr/kerberos/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/alice/bin