我需要了解全局变量和用户变量在 Windows 中的工作方式。
情况1: 如果在用户和全球的部分的行为是什么?例如,我在用户和全球的部分,我只看到全球的值;有没有办法“追加”用户路径至全球的小路?
案例 2:
变量定义在用户部分未“解决”全球的部分。如果我使用SET
命令,我会看到所有已定义变量的列表(用户和全球的),但‘交叉引用’尚未解决。
例如
在用户部分我定义:
VAR1=test-user
在全局部分我定义:
VAR2=%VAR1%-more;%VAR3%-more
VAR3=test-global
我看到的是SET
:
...
VAR1=test-user
VAR2=%VAR1%-more;test-global-more
VAR3=test-global
...
我在 Windows 7 x64 机器上。
因此,基于上述测试,我的结论是:
- 全局变量覆盖用户变量(如果名称相同则只有全局有效)
- 用户变量和全局变量之间不允许交叉引用
我对吗?
答案1
你的结论不太正确,至少根据我的测试。
用户变量可以引用系统(全局)变量。
系统变量不能引用用户变量。
用户变量将覆盖系统(全局)变量。
只是在默认集合中,
TEMP
(和TMP
)被定义为用户变量,%USERPROFILE%\AppData\Local\Temp
同时被定义为系统变量C:\Windows\TEMP
。PATH
似乎是一种特殊情况,其中用户变量PATH
(如果定义)总是附加到系统变量而不是覆盖它。