通俗的講,環境變數就是告訴電腦 (實際是操作系統)幾個目錄。這幾個目錄下存儲幾個執行文件,如前面顯示的/usr/bin目錄,大部分的系統命令都在這個目錄下。 當我們輸入命令mkdir時,系統就會在環境變數所代表的幾個目錄從前到後去查找,哪個裡面有mkdir文件,然後去執行mkdir命令。 系統中環境 ...
通俗的講,環境變數就是告訴電腦 (實際是操作系統)幾個目錄。這幾個目錄下存儲幾個執行文件,如前面顯示的/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命令了