giant
V2EX  ›  Windows

Windows 系统变量 path 中的定义的变量指向变量时无法正确解析

By giant at 2023 年 3 月 6 日 · 1536 次点击
系统变量配置如下:
path 中添加%JAVA_HOME%\bin ;
JAVA_JOME=%JAVA_HOME_ORACLE_8%;
JAVA_HOME_ORACLE_8=D:\java\xxx.
echo %path%中的%JAVA_HOME%可以正常解析为 D:\java\xxx 。

但是同样在系统变量中配置:
path 中添加%P_HOME%;
P_HOME=%P_HOME_37%
P_HOME_37=D:\p\xxx
echo %path%中的%P_HOME%就没有被正常解析,还是%P_HOME%。
path 中的%P_HOME%改为%P_HOME_37%时,就会被正确解析为 D:\p\xxx

这样的问题在 2 台 win11 的机子上都出现了,网上也搜不出个所以然。
有老哥知道为什么会出现这个问题吗?
1 条回复  •  2023-03-06 11:03:45 +08:00
ysc3839
   1
ysc3839  
   2023 年 3 月 6 日 via Android   ❤️ 1
Windows 的环境变量是存在注册表里的,而注册表有个特性是展开环境变量,需要项目类型是 REG_EXPAND_SZ 时才会展开,你手动创建的环境变量在注册表中的类型不是 REG_EXPAND_SZ ,所以不会展开。
另外需要注意的是,REG_EXPAND_SZ 不代表注册表会自动展开,这个类型只是告诉读取的应用程序需要进行展开,程序后续怎么处理是程序的事。
© 2026 V2EX · 30ms · 3.9.8.5