通俗的講,環境變量就是告訴電腦 (實際是操做系統)幾個目錄。這幾個目錄下存儲幾個執行文件,如前面顯示的/usr/bin目錄,大部分的系統命令都在這個目錄下。
當咱們輸入命令mkdir時,系統就會在環境變量所表明的幾個目錄從前到後去查找,哪一個裏面有mkdir文件,而後去執行mkdir命令。
系統中環境變量的名字是PATH,其內容可經過下面的命令顯示 (根據操做系統不一樣和配置不一樣,略有差異,但格式是統一的,:分割的一堆路徑)
$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
因此若是咱們想讓本身的命令能被系統找到,就須要把命令所在的目錄加到環境變量裏面,怎麼操做呢?
加到環境變量的路徑必須是全路徑,全路徑指以/開頭或以~開頭的路徑。
# 注意第一個PATH不含$, 第二個PATH有$符號
$ export PATH=$PATH:/home/ct
$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ct
因此在之後安裝了新的軟件,或者寫了新的腳本後,都把軟件的可執行程序和可執行的腳本所在的目錄,加到環境變量裏面就能夠了。
可是,在命令行中執行export,對環境變量所作的修改,只對當前終端有效,退出後就無效了。爲了使得這一操做長期有效,咱們須要把這句話寫入一個文件中,一個登錄服務器就會被自動讀取的文件中。
對於普通用戶,在遠程登陸終端時,家目錄下的~/.bash_profile (不是~/.bashrc)會自動被讀取,因此咱們須要把export語句加入到這個文件中。
# 這是個人~/.bash_profile中的內容,主要是最後一行。能夠連續的加入多個路徑。
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
export PATH=$PATH:/home/ct:/home/bin:/home/soft/bowtie2/bin
前面提到,系統查找命令的順序是從環境變量的第一個目錄到最後一個目錄,在第一次碰到查詢的命令後,就調用執行。假如系統存在一個python命令,咱們本身又安裝了一個python (假如在/home/ct/anaconda/bin目錄下),若是咱們想執行本身的python程序,就須要把/home/ct/anaconda/bin寫在$PATH前面,以下
# 注意$PATH的順序
$ export PATH=/home/ct/anaconda/bin:$PATH
至此,咱們能夠熟練使用環境變量來簡化命令的輸入過程了,由於若是沒有環境變量,咱們就得須要運行/home/ct/anaconda/bin/python來運行python命令了