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