Windows 10 环境变量:为什么变量替换不起作用?

Windows 10 环境变量:为什么变量替换不起作用?

在 Windows 10 Pro 上:

我刚刚下载并安装(即解压)了最新的 Maven 版本,将其放入一个目录中,为即将进行的开发项目做准备。然后 - 按照指示 - 我定义了两个环境变量:

M2=%M2_HOME%\bin
M2_HOME=C:\Program Files\Apache Software Foundation\apache-maven-3.6.0

但是由于某些奇怪的原因,前一个%占位符“M2”未被处理,即“set”仅产生:

>set
...
M2=%M2_HOME%\bin
M2_HOME=C:\Program Files\Apache Software Foundation\apache-maven-3.6.0
...

单击“确定”并关闭环境变量对话框和系统设置对话框。我重新启动了新的 cmd-shell,甚至关闭并重新启动了 Windows 资源管理器(即桌面),这肯定会触发重新读取和重新替换这些变量,然后再次从该桌面重新启动 cmd,但M2仍处于未替换的%M2_HOME%\bin值。

我还在注册表中检查: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\M2被定义为 REG_EXPAND_SZ,因此应该对其进行评估并且应该替换 %-vars,但显然这里没有。

如果我在命令行上手动分配相同的值当然可以像人们期望的那样正确替换,但默认情况下不会通过上面显示的 env-var 定义进行替换。

那么,我在这里遗漏了什么?为什么作为 M2 值的一部分的 M2_HOME 没有被正确替换?

编辑:根据 JosefZ 的要求添加了此输出:

C:\Users\mmo>reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" -v M2*

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
    M2    REG_EXPAND_SZ    %M2_HOME%\bin
    M2_HOME    REG_EXPAND_SZ    %ProgramFiles%\Apache Software Foundation\apache-maven-3.6.0

End of search: 2 match(es) found.

C:\Users\mmo>reg query HKCU\Environment -v M2*

End of search: 0 match(es) found.

C:\Users\mmo>

相关内容