1. 程式人生 > >一圖讓你理解Linux中的環境變數設定

一圖讓你理解Linux中的環境變數設定

本文首先介紹了環境變數的通俗理解,然後給出了幾種不同設定方式的詳細解釋,與其他部落格不同,本部落格通過一張圖總體描述不同設定方式的作用範圍,生效時間。最後通過一個具體的例子說明了環境變數的設定格式。

  • 什麼是環境變數

所謂的環境變數有時候是一種“快捷方式”,有時候又是一種類“巨集”。比如說你某個目錄中安裝了jdk,為了能夠在任何目錄中都能直接執行 java 命令此時你需要將 java命令所在的目錄新增到PATH環境變數中,這時候環境變數就是一種“快捷方式”。再比如說,有時候需要每次都進入一個很長的檔案路徑 /home/zld/test1/test2 ,為了省事,你可以設定環境變數 TEST=/home/zld/test1/test2 下次需要時你只需要 cd $TEST就可以了,這時候環境變數TEST就是一個“巨集”。

  • Linux 中環境變數的設定方式

據傳說Linux中的環境變數設定方式有直接在當前bash export 環境=xxx,在~/.bashrc中新增上述語句,在~/.profile中新增,在 /etc/profile中新增等等。那麼這些方式有什麼不同呢,下面我想通過一個圖來說明環境變數的工作過程。圖中描述了不同的設定方式的作用域以及設定生效的時間。

                       

(1)/etc/profile是針對所有使用者的設定,該檔案只在在系統啟動時載入執行一次,因此如果在/etc/profile中修改了環境變數,則必須重啟才能生效。其環境變數的設定對所有使用者有效。

(2) ~/.profile 和~/.bashrc都是使用者層面的設定。在使用者登入時會優先載入執行

 ~/.profile,並在~/。~/.profile中呼叫執行 ~/.bashrc 。這兩個設定都對當前使用者開啟的所有bash視窗有效。~/.profile只在使用者登入時執行一次,因此必須登出使用者重新登入才能生效。~/.bashrc則可以通過source ~/.bashrc 立即生效。

(3)在當前視窗的 export 環境變數=xxx 的操作可以立即生效,但是隻對當前視窗有效。對其他視窗無效,即使是同一使用者的不同視窗。       

以上幾種方式的共同特點都是執行了   export 環境變數=xxx   設定了環境變數,只是執行的時間和作用域不同。因此一個有趣的問題是,Ubantu 中預設的編碼方式為 LANG="en_US.UTF-8"。

如果為了支援中文在~/.bashrc 中改成了 export LANG=zh_CN 。過了一段時間,你又想改成預設的配置,於是你就將export LANG=zh_CN註釋掉,並直接source,此時覺得應該就是默認了,但發現並沒有如願以償。原因是環境變數的改變的本質因為執行了 export 語句,你只是註釋了該語句,並沒有執行新的export,因此,並不能達成。解決辦法是重新啟動。                    

  • 環境變數的設定格式

下面以 LD_LIBRARY_PATH 為例說明設定格式。LD_LIBRARY_PATH 是Linux中指明動態連結庫位置的一個環境變數。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:your_path

 其中 $LD_LIBRARY_PATH 表示原有的動態連結庫路徑,your_path是你要設定的連結庫的位置,冒號用於連結不同位置,防止覆蓋原有的路徑。當然這種方式只是針對需要保留原有變數值的情形。對於只需要設定成新的值情形比如 設定 LANG,直接覆蓋即可。