%M2%不能在系统variablesPath中工作,只能在用户variablesPath中使用

我正在安装Maven,需要设置M2和M2_Home。 我已经在环境variables的用户variables中设置了它们。 我在环境variables的Systemvariables中添加了;%M2%到Pathvariables。 我期待能够运行mvn --version但我不能。 但是,如果我做的echo %Path%我可以看到有%M2%path中,如果我echo %M2%我可以看到mvn所在的bin目录。

所以我有这个问题。 直到我在用户variables中创build一个Pathvariables并向该variables添加了%M2% (并将其从系统variables的path中删除)之后,问题才得到解决。 现在起作用了。 有没有人知道为什么它只是以这种特定的方式工作?

你必须看看Windows源代码,以确定发生了什么,但这并不令我感到惊讶。 根据我的测试,似乎系统环境变量只能引用其他系统环境变量,而不是用户环境变量。

请注意, echo %PATH%应显示扩展路径。 你不应该看到%M2%

这可能是因为系统环境变量有时需要在没有用户上下文的情况下进行扩展。 如果用户环境变量包含在系统环境变量的扩展中,则需要将其视为特殊情况。 也可能这被认为是首选行为,以至于用户的环境变量不会意外地影响系统变量的解释,或者存在与环境变量在进程之间继承的方式有关的问题。

或者像您所做的那样将%M2%添加到用户路径中,或者将M2作为系统而不是用户环境变量。