3

我正在安装 Maven,需要设置 M2 和 M2_Home。我已将它们设置在环境变量的用户变量中。我;%M2%在环境变量中的系统变量中添加了Path变量。我期待能够跑mvn --version,但我不能。但是,如果我这样做, echo %Path%我可以看到%M2%路径中有,如果echo %M2%我可以看到 mvn 所在的 bin 目录。

所以我遇到了这个问题。%M2%直到我在用户变量中创建了一个路径变量并将其添加到该变量(并将其从系统变量中的路径中删除)后,问题才得到解决。现在它起作用了。有谁知道为什么它只以这种特定方式工作?

4

1 回答 1

3

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

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

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

%M2%像您一样添加到用户路径,或者创建M2一个系统而不是用户环境变量。

于 2012-11-01T20:01:57.487 回答