全局与用户 Windows 环境变量

And*_*oni 6 windows environment-variables

我需要了解全局变量与用户变量在 Windows 中的工作原理。

案例 1: 如果在用户全局部分定义了相同的变量,则行为是什么?例如,我在用户全局部分定义了一个 %PATH% 变量,我只看到全局值;有没有办法将用户路径“附加”到全局路径?

情况 2:用户部分中 定义的变量在全局部分中未“解析” 。如果我使用SET命令,我会看到所有已定义变量(userglobal)的列表,但未解析“交叉引用”。

例如

在用户部分我定义:

VAR1=test-user 
Run Code Online (Sandbox Code Playgroud)

在全局部分我定义:

VAR2=%VAR1%-more;%VAR3%-more
VAR3=test-global 
Run Code Online (Sandbox Code Playgroud)

SET我看:

...
VAR1=test-user
VAR2=%VAR1%-more;test-global-more
VAR3=test-global
...
Run Code Online (Sandbox Code Playgroud)

我在 Windows 7 x64 机器上。

因此,基于上述测试,我的结论是:

  • 全局变量覆盖用户变量(如果名称相同,则仅全局有效)
  • 用户变量和全局变量之间不允许交叉引用

我对吗?

Bob*_*Bob 7

你的结论并不完全正确,至少根据我的测试。

  • 用户变量可以引用系统(全局)变量。

    系统变量不能引用用户变量。

  • 用户变量将覆盖系统(全局)变量。

    只是在默认设置中,TEMP(和TMP) 被定义为用户变量,%USERPROFILE%\AppData\Local\Temp同时作为系统变量定义为C:\Windows\TEMP

    PATH似乎是一种特殊情况,其中用户变量PATH(如果已定义)始终附加到系统变量而不是覆盖它。