2021-05-12 14:32:11
設定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 變數的值使用冒號(:)隔開的:
# set PATH so it includes user's private bin if it exists
if[-d "$HOME/bin"];then
PATH="$HOME/bin:$PATH"
fi
在最後加上程式碼 PATH="$PATH:/usr/local/Hadoop/bin"
,注意等號(=)兩邊不要有空格,即:
# set PATH so it includes user's private bin if it exists
if[-d "$HOME/bin"];then
PATH="$HOME/bin:$PATH"
fi
PATH="$PATH:/usr/local/hadoop/bin"
因為這個檔案是在使用者登陸是才讀取一次的,所以需要重新啟動才會生效(修改 /etc/profile、/etc/environment 也是如此)。但可以使用命令 source ./.profile
使其立即生效。通過 echo $PATH
可以看到修改後的變數值:
source ./.profile
echo $PATH
通過 Shell 命令 export 修改 Linux 環境變數
另一種修改 Linux 環境變數的方式就是通過 Shell 命令 export,注意變數名不要有美元號 $,賦值語句中才需要有:
export PATH=$PATH:/usr/local/hadoop/bin
export 方式只對當前終端 Shell 有效: 使用 export 設定的變數,只對當前終端 Shell 有效,也就是說如果新開啟一個終端,那這個 export 設定的變數在新終端中使無法讀取到的。適合設定一些臨時變數。
根據變數所需,選擇設定方式,例如 JAVA_HOME 這類變數,就適合將其設為為全域性變數,可在 /etc/environment 中設定。
相關文章