如何设置 Windows 环境变量
关注 1800
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')