一圖讓你理解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都是使用者層面的設定。在使用者登入時會優先載入執行
(3)在當前視窗的 export 環境變數=xxx 的操作可以立即生效,但是隻對當前視窗有效。對其他視窗無效,即使是同一使用者的不同視窗。
以上幾種方式的共同特點都是執行了 export 環境變數=xxx 設定了環境變數,只是執行的時間和作用域不同。因此一個有趣的問題是,Ubantu 中預設的編碼方式為 LANG="en_US.UTF-8"。
-
環境變數的設定格式
下面以 LD_LIBRARY_PATH 為例說明設定格式。LD_LIBRARY_PATH 是Linux中指明動態連結庫位置的一個環境變數。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:your_path
其中 $LD_LIBRARY_PATH 表示原有的動態連結庫路徑,your_path是你要設定的連結庫的位置,冒號用於連結不同位置,防止覆蓋原有的路徑。當然這種方式只是針對需要保留原有變數值的情形。對於只需要設定成新的值情形比如 設定 LANG,直接覆蓋即可。