環境變數,
通俗的講,環境變數就是告訴電腦 (實際是作業系統)幾個目錄。這幾個目錄下儲存幾個執行檔案,如前面顯示的/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 . ~/.bashrcfiif [ -f ~/.bash_aliases ]; then . ~/.bash_aliasesfiexport 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命令了