1. 程式人生 > >20、linux筆記--設定Linux環境變數的方法和區別

20、linux筆記--設定Linux環境變數的方法和區別

致謝設定Linux環境變數的方法和區別

設定 Linux 環境變數可以通過 export 實現,也可以通過修改幾個檔案來實現,有必要弄清楚這兩種方法以及這幾個檔案的區別。

通過檔案設定 Linux 環境變數

首先是設定全域性環境變數,對所有使用者都會生效:

  • etc/profile: 此檔案為系統的每個使用者設定環境資訊。當用戶登入時,該檔案被執行一次,並從 /etc/profile.d 目錄的配置檔案中搜集shell 的設定。一般用於設定所有使用者使用的全域性變數。
  • /etc/bashrc: 當 bash shell 被開啟時,該檔案被讀取。也就是說,每次新開啟一個終端 shell,該檔案就會被讀取。

接著是與上述兩個檔案對應,但只對單個使用者生效:

  • ~/.bash_profile 或 ~/.profile: 只對單個使用者生效,當用戶登入時該檔案僅執行一次。使用者可使用該檔案新增自己使用的 shell 變數資訊。另外在不同的LINUX作業系統下,這個檔案可能是不同的,可能是 ~/.bash_profile, ~/.bash_login 或 ~/.profile 其中的一種或幾種,如果存在幾種的話,那麼執行的順序便是:~/.bash_profile、 ~/.bash_login、 ~/.profile。比如 Ubuntu 系統一般是 ~/.profile 檔案。
  • ~/.bashrc: 只對單個使用者生效,當登入以及每次開啟新的 shell 時,該檔案被讀取。

 

此外,修改 /etc/environment 這個檔案也能實現環境變數的設定。/etc/environment 設定的也是全域性變數,從檔案本身的作用上來說, /etc/environment 設定的是整個系統的環境,而/etc/profile是設定所有使用者的環境。有幾點需注意:

  • 系統先讀取 etc/profile 再讀取 /etc/environment(還是反過來?)
  • /etc/environment 中不能包含命令,即直接通過 VAR="..." 的方式設定,不使用 export 。
  • 使用 source /etc/environment
     可以使變數設定在當前視窗立即生效,需登出/重啟之後,才能對每個新終端視窗都生效。

修改 Linux 環境變數例項

以 Ubuntu 為例,修改 ~/.profile 檔案:

vim ~/.profile

如果該檔案存在,則在檔案的最後看到如下程式碼,PATH 變數的值使用冒號(:)隔開的:

  1. # set PATH so it includes user's private bin if it exists
  2. if[-d "$HOME/bin"];then
  3. PATH="$HOME/bin:$PATH"
  4. fi

在最後加上程式碼 PATH="$PATH:/usr/local/Hadoop/bin",注意等號(=)兩邊不要有空格,即:

  1. # set PATH so it includes user's private bin if it exists
  2. if[-d "$HOME/bin"];then
  3. PATH="$HOME/bin:$PATH"
  4. fi
  5. PATH="$PATH:/usr/local/hadoop/bin"

因為這個檔案是在使用者登陸是才讀取一次的,所以需要重啟才會生效(修改 /etc/profile、/etc/environment 也是如此)。但可以使用命令 source ./.profile 使其立即生效。通過 echo $PATH 可以看到修改後的變數值:

  1. source ./.profile
  2. echo $PATH

通過 Shell 命令 export 修改 Linux 環境變數

另一種修改 Linux 環境變數的方式就是通過 Shell 命令 export,注意變數名不要有美元號 $,賦值語句中才需要有:

  1. export PATH=$PATH:/usr/local/hadoop/bin

 

export 方式只對當前終端 Shell 有效: 使用 export 設定的變數,只對當前終端 Shell 有效,也就是說如果新開啟一個終端,那這個 export 設定的變數在新終端中使無法讀取到的。適合設定一些臨時變數。

根據變數所需,選擇設定方式,例如 JAVA_HOME 這類變數,就適合將其設為為全域性變數,可在 /etc/environment 中設定。