%M2%在系统变量Path中无效,但在用户变量Path中有效

3
我正在安装Maven并需要设置M2和M2_Home。我已经将它们设置在环境变量的用户变量中。在环境变量的系统变量中,我将;%M2%添加到Path变量中。我本来希望能够运行mvn --version,但是我不能。然而,如果我执行echo %Path%,我可以看到Path中有%M2%,如果我执行echo %M2%,我可以看到mvn所在的bin目录。
所以我遇到了这个问题。这个问题直到我在用户变量中创建了一个Path变量,并将%M2%添加到该变量中(并从系统变量的路径中删除了它)才得以解决。现在它可以正常工作了。有没有人知道为什么只有这种特定的方式才能使它正常工作?
1个回答

3
你得查看Windows源代码才能确定发生了什么,但这并不让我感到惊讶。根据我的测试,系统环境变量只能引用其他系统环境变量,而不能引用用户环境变量。
请注意,echo %PATH%应该显示扩展后的路径。你不应该看到%M2%。
这可能是因为系统环境变量有时需要在没有用户上下文的情况下进行扩展。如果用户环境变量包含在系统环境变量的扩展中,这将需要将其视为一种特殊情况。也有可能认为这是首选的行为,以使用户的环境变量不能意外地影响系统变量的解释,或者涉及到环境变量在进程之间继承的方式存在问题。
要么像你做的那样将%M2%添加到用户路径中,要么将M2变为系统而不是用户环境变量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接