如何設定 Windows 環境變數

閱讀 6:32·字數 1961·更新 
Youtube 頻道
訂閱 133

Windows 環境變數

在 Windows 系統中,系統環境變數對所有使用者有效,而使用者環境變數僅對使用者自身有效。

Windows 環境變數儲存在哪裏?

Windows 中的環境變數儲存在登錄檔中,其中系統環境變數對應的登錄檔機碼為HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment,使用者環境變數對應的登錄檔機碼為HKEY_CURRENT_USER\Environment

設定 Windows 系統環境變數需要較高的權限

設定 Windows 系統環境變數需要較高的權限,這可能會要求你提供相關賬戶的驗證資訊。

使用介面設定 Windows 環境變數

對於 Windows 10/11,可以在搜尋方塊中輸入環境變數,然後從結果中選擇對應的項目,以在快顯的環境變數視窗中編輯系統環境變數或使用者環境變數。如果快顯的是系統內容視窗,則需要繼續點選環境變數按鈕

對於較老的 Windows 版本,可以嘗試通過主控臺:系統 | 進階系統設定開啟系統內容視窗

通過環境變數視窗編輯的 Windows 環境變數可能無法對命令列應用立即產生影響

當你通過環境變數視窗編輯 Windows 環境變數後,這些環境變數的改變可能不會被正在執行的命令列應用識別(比如,命令提示字元),對於這種情況,可嘗試重新啟動命令列應用。

使用命令提示字元設定 Windows 環境變數

命令提示字元setx命令同樣可以設定 Windows 環境變數,其格式如下。

setx <variable> <value> [/m]
variable 參數

variable參數為環境變數的名稱。

value 參數

value參數為環境變數的值,該參數可通過成對的%傳回其他環境變數的值,比如,書寫%PATH%將傳回環境變數PATH的值(當環境變數PATH不存在時,將傳回%PATH%本身)。如果希望參考環境變數,而不是直接傳回其值,可使用^%進行逸出,比如,^%PATH^%是對環境變數PATH的參考。

當參數value對應的值包含空白字元時,需要使用"括住,比如,"Hello World"。這條規則也適用於%傳回的值,當環境變數PATH含有空白字元時,需要使用"將其括住,"%PATH%"

value參數的值最多可包含 1024 個字元,超出此範圍的部分將被裁剪。如果你沒有提供value參數,那麽setx命令將顯示相關環境變數的資訊。

/m 選項

/m選項表示設定系統環境變數,要啟用該選項,應確保使用管理員身分執行命令提示字元,或使用/u/p選項提供管理員賬戶認證。

使用命令 setx 設定 Windows 環境變數後需要重新啟動命令提示字元

在使用命令setx設定環境變數後,需要重新啟動命令提示字元才能識別發生的改動。

Windows 命令提示字元中的 %PATH% 是一個組合值

某些環境變數可能會被系統,命令提示字元或一些程式修改。比如,命令提示字元中的%PATH%是系統環境變數PATH與使用者環境變數PATH的組合,使用setx PATH "%PATH%;.\bin\"可能會寫入重複的內容。

逸出特殊字元

想要取得更多關於命令列逸出的內容,你可以檢視如何在命令列中逸出特殊字元一節。

下面的命令將使用者環境變數LS設定為learnscript.net

setx LS learnscript.net

下面的命令將使用者環境變數LSPATH,設定為LS表示的值learnscript.net與一段網址的組合,LSPATH的值將是learnscript.net/welcome/play/。如果之後修改LS,那麽對LSPATH不會有任何影響。

setx LSPATH %LS%/welcome/play/

嘗試使用^%LSPATH中參考環境變數LS,當LS的值發生變化時,LSPATH也將改變。

setx LSPATH ^%LS^%/welcome/play/

設定使用者環境變數LSTITLE,將^%排除在"之外,並使用成對的"包含了多個含有空格的內容。

setx LSTITLE "Is "^%LS^%" not bad?"

嘗試使用"括住含有空格的內容,如果環境變數MYNAME不存在,那麽LSTITLE的值將是Welcome %MYNAME% to learnscript.net

setx LSTITLE "Welcome %MYNAME% to %LS%"

使用 PowerShell 設定 Windows 環境變數

使用方法GetEnvironmentVariableSetEnvironmentVariable,你可以在 PowerShell 中取得或設定環境變數,其格式如下。

GetEnvironmentVariable(variable, target)
SetEnvironmentVariable(variable, value, target)

variable 參數

variable參數為環境變數的名稱。

value 參數

value參數為環境變數的值,可以使用%表示對其他環境變數的參考,比如,%OS%,他的效果類似於setx命令中的^%OS^%

target 參數

target參數為環境變數的位置,為該參數傳遞字串'Machine',將取得或設定系統環境變數,傳遞'User'則取得或設定使用者環境變數。

下面的命令使用SetEnvironmentVariable方法設定了使用者環境變數LS

[Environment]::SetEnvironmentVariable('LS', 'learnscript.net', 'User')

下面的命令使用%LS%參考環境變數LSLSPATH的值會在LS被修改後發生變化。

[Environment]::SetEnvironmentVariable('LSPATH', '%LS%/welcome/play/', 'User')

下面的命令使用GetEnvironmentVariable取得使用者環境變數LS的值,並將其寫入到使用者環境變數LSTITLE中。

[Environment]::SetEnvironmentVariable('LSTITLE', [Environment]::GetEnvironmentVariable("LS", "User") + ' is here', 'User')