如何設定 UNIX/Linux/macOS 環境變數
UNIX/Linux/macOS 環境變數
UNIX,Linux,以及從 UNIX 衍生的 macOS 在設定環境變數方面的操作是類似的,需要使用export
命令,或將該命令寫入相關檔案。
使用 export 命令設定 UNIX/Linux 環境變數
在 UNIX 和 Linux 中,export
命令可用來設定環境變數,其格式如下。
export <name>=<value>
- name 參數
name
參數為環境變數的名稱。- value 參數
value
參數為環境變數的值,該參數可通過$
傳回其他環境變數的值,比如,$NAME
和${NAME}
均傳回環境變數NAME
的值。另外,你還可以使用\
進行逸出,比如,\$
將逸出為$
而不是傳回某個環境變數的值。
UNIX/Linux 中的環境變數名稱區分大小寫
在書寫變數名稱時,請註意拼字問題,大小寫會被 UNIX/Linux 區別對待,比如,Name
和name
將被判斷為不同的變數。
下面的命令設定名稱為LS
的環境變數,其值將為learnscript.net
。
export LS=learnscript.net
下面的命令設定名稱為LSPATH
的環境變數,其值將為環境變數LS
的值與一段網址的組合,即learnscript.net/welcome/play/
。
export LSPATH=${LS}/welcome/play/
直接在 Shell 中使用 export 命令設定的環境變數無法一直持續
如果直接在 Shell 中執行export
命令來設定變數,那麽這些變更無法一直持續,比如,在重新啟動作業系統後。你需要將設定變數的export
命令寫入特定的檔案,以取得永久化效果。
使用檔案 /etc/profile 設定 UNIX/Linux 環境變數
將export
命令新增至檔案/etc/profile
,可以設定對所有使用者有效的環境變數,只需要通過vi
命令啟動編輯器並開啟檔案/etc/profile
,然後追加格式為export <name>=<value>
的命令即可。
sudo vi /etc/profile
使用 UNIX/Linux sudo 命令升階權限
你可以使用sudo
命令來執行vi
,以避免沒有足夠的權限寫入或讀取/etc/profile
。
如果習慣了 Windows 中的一些文字編輯器,那麽vi
開啟的編輯器可能會讓你無所適從,他的操作方式有點“特別”,“怎麽會這個樣子的?”。
當然,相對於編輯/etc/profile
,一些系統推薦通過新增路徑為/etc/profile.d/<filename>.sh
的檔案,來實作相同的效果,其中filename
應取代為具體的檔案名。
無論是/etc/profile
還是/etc/profile.d/<filename>.sh
,你只需要選擇其中之一,即可為所有使用者設定環境變數。
sudo vi /etc/profile.d/<filename>.sh
指定執行 UNIX/Linux sh 檔案的 Shell 程式
在sh
檔案的開始一行,你可以使用#!
來指定執行sh
檔案的 Shell 程式。比如,#!/bin/bash
指定使用bash
來執行該檔案。
UNIX/Linux 中預設的 Shell 程式
大多數的 UNIX/Linux 系統預設bash
為 Shell 程式,但他並不是唯一的,你可以選擇sh
,dash
等作為預設。
使用檔案 ~/.profile 設定 UNIX/Linux 環境變數
將export
命令新增至檔案~/.profile
,可以為目前使用者設定環境變數,只需要通過vi
啟動編輯器,然後追加格式為export <name>=<value>
的命令即可。
vi ~/.profile
到底應該編輯哪個檔案來為目前使用者設定 UNIX/Linux 環境變數?
事實上,對於應該編輯哪個檔案,並沒有準確的答案,因為不同的 Shell 程式會有自己的邏輯。如果修改~/.profile
沒效果,你可以嘗試編輯~/.bash_profile
,~/.bashrc
,或具體 Shell 程式所指明的檔案。
使用 UNIX/Linux su 命令切換使用者時檔案 ~/.profile 可能不被執行
如果你嘗試使用su
命令切換到某個使用者,那麽該使用者對應的~/.profile
檔案可能不會執行。
使用 source 命令執行檔案
在采用上述方法為檔案新增export
命令後,環境變數可能不會發生變化,因為被修改的檔案沒有被執行。你可以使用source
命令立即執行這些檔案,以觀察環境變數發生的變化。
source <filename>
- filename 參數
filename
參數為需要執行的檔案。
下面的命令將執行檔案/etc/profile
。
source /etc/profile
設定 macOS 環境變數
macOS 提供了更好的編輯器,你可以在啟動臺搜尋並啟動終端機,然後使用nano
或vim
命令開啟相關檔案,並新增修改一些export
命令。
nano ~/.zshrc
vim ~/.zshrc
macOS Catalina 中的預設 Shell 程式為 zsh
在 macOS Catalina 以及之後的版本中,預設的 Shell 程式從bash
變更為了zsh
,因此,你可以編輯檔案~/.zshrc
而不是~/.bash_profile
或~/.bashrc
。