如何設定 Windows 環境變數
訂閱 480
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')