如何设置 Windows 环境变量

    我被代码海扁署名-非商业-禁演绎
    阅读 6:26·字数 1931·更新 
    Bilibili 空间
    关注 960

    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')