Ubuntu新增刪除環境變數

Vihaclue發表於2018-12-07

什麼是環境變數
環境變數一般是指在作業系統中用來指定作業系統執行環境的一些引數,比如臨時資料夾位置和系統資料夾位置等[1]。因為一些引數可以被當做系統預設的設定,如此以來,在執行某個程式的時候就不需要再指定這些引數了。比如你總是使用某個程式,在命令列中使用時,每次執行這個程式你都要進入程式所在的目錄啟動程式。如果你將程式所在的目錄加入環境變數後,執行程式時你只需要輸入程式的名稱,系統就會自動搜尋到你程式的位置,而不會再出現command not found這樣的問題了。

如何設定環境變數

首先要認識幾個和環境變數有關的檔案[2]:
1. /etc/profile —— 此檔案為系統的每個使用者設定環境資訊,當使用者第一次登入時,該檔案被執行.並從/etc/profile.d目錄的配置檔案中搜集shell的設定;
2. /etc/environment —— 在登入時作業系統使用的第二個檔案,系統在讀取你自己的profile前,設定環境檔案的環境變數;
3. /etc/bashrc —— 為每一個執行bash shell的使用者執行此檔案.當bash shell被開啟時,該檔案被讀取;
4. ~/.profile —— 每個使用者都可使用該檔案輸入專用於自己使用的shell資訊,當使用者登入時,該檔案僅僅執行一次!預設情況下,它設定一些環境變數,執行使用者的.bashrc檔案;
5. ~/.bashrc —— 該檔案包含專用於你的bash shell的bash資訊,當登入時以及每次開啟新的shell時,該檔案被讀取;
認識以上5個檔案之後,我們設定環境變數的方法也就有了。

方法一:直接修改/etc/enviroment檔案,這種方法的作用域是全域性的,永久性的。

開啟/etc/environment檔案,其內容如下:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

在環境變數PATH中新增你要新增的路徑即可。

方法二:修改/etc/profile檔案,這種方法的作用域是全域性的,永久性的。

這個檔案不是儲存環境變數資訊的檔案,在登入時,系統只是根據它的內容對環境變數進行設定。

export PATH=$PATH:[your path1]:[your path2]:[...]  
export PATH=[your path1]:[your path2]:[...]:$PATH  

其中,各個PATH之間用冒號分隔,$PATH指代新增your path前的環境變數。我感覺這是計算機中一個特有的定義方式,就像 i = i + 1一樣。

方法三:修改/etc/bashrc或者~/.bashrc檔案.

這兩個檔案同樣不是為了儲存環境變數,只是在使用bash shell時進行設定而已,所以設定方法和二中一樣:

export PATH=$PATH:[your path1]:[your path2]:[...]  
export PATH=[your path1]:[your path2]:[...]:$PATH  

對於/etc/bashrc檔案,修改的作用於所有使用者,但對於~/.bashrc檔案,修改的僅僅作用於當前使用者。這種修改的作用也是永久性的。 

另外,有一個疑問,我也不是很清楚:這兩個檔案只是對bash shell的環境變數的設定,我感覺脫離bash shell,不使用命令列了,這樣的修改就沒有意義了。這種想法到底對不對我也不是很清楚,我對bash shell的認識還很淺,這個地方就當存疑,以後對系統更瞭解再解決。

方法四:修改~/.profile檔案.
這種方法和修改/etc/profile本質上是一樣的,這種之不過是僅僅修改了當前使用者自己的配置檔案。所以作用僅限於當前使用者,但同樣也是永久性的。

法五:在Terminal中使用shell命令.

export PATH=$PATH:[your path1]:[your path2]:[...]  
export PATH=[your path1]:[your path2]:[...]:$PATH  

這種方法是暫時的, 關閉終端這個設定也就失效了,而且作用僅僅限於當前終端,其他終端中這個設定不會起作用。
在設定成功後,可以使用命令檢視設定的環境變數。 

env //列印所有的環境變數
printenv //列印所有的環境變數
echo $PATH //列印PATH環境變數  

這時我們就可以在PATH變數後看到相關的修改了。在以上前四種方法中,修改後不會設定立即生效(大家思考一下原因),需要重啟或者重新登入(哪個需要重啟,哪個需要重新登入?),當然使用source命令也可以。使用方法為:

source [file name]  //不要忘記路徑,或者執行時要在檔案路徑下  

如何刪除對環境變數的修改

將以上方法中對配置檔案的修改還原回去即可。另外,由於第五種方法由於是臨時性質的且區域性的,只需要關閉這個Terminal就好了.

參考:

1. https://blog.csdn.net/u012803067/article/details/78581415

相關文章