如何設定 Windows 環境變數
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 環境變數
使用方法GetEnvironmentVariable
或SetEnvironmentVariable
,你可以在 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%
參考環境變數LS
,LSPATH
的值會在LS
被修改後發生變化。
[Environment]::SetEnvironmentVariable('LSPATH', '%LS%/welcome/play/', 'User')
下面的命令使用GetEnvironmentVariable
取得使用者環境變數LS
的值,並將其寫入到使用者環境變數LSTITLE
中。
[Environment]::SetEnvironmentVariable('LSTITLE', [Environment]::GetEnvironmentVariable("LS", "User") + ' is here', 'User')