我正在安装Maven,需要设置M2和M2_Home。我在环境变量的用户变量中设置了它们。我将;%M2%
添加到环境变量的系统变量中的Path变量中。我期待能够运行mvn --version
,但我不能。但是,如果我这样做
echo %Path%
我可以看到路径中有%M2%
,如果我echo %M2%
,我可以看到mvn所在的bin目录。
所以我遇到了这个问题。直到我在用户变量中创建Path变量并将%M2%
添加到该变量(并将其从系统变量中的路径中删除)之前,问题才得到解决。现在它有效。有没有人知道为什么它只是以这种特定的方式工作?
答案 0 :(得分:3)
你必须查看Windows源代码以确定发生了什么,但这并不让我感到惊讶。根据我的测试,系统环境变量似乎只能引用其他系统环境变量,而不是用户环境变量。
请注意,echo %PATH%
应显示展开的路径。你不应该看到%M2%
。
这可能是因为有时需要在没有用户上下文的情况下扩展系统环境变量。如果用户环境变量包含在系统环境变量的扩展中,则需要将其视为特殊情况。这也可能被认为是首选行为,因此用户的环境变量不会意外地影响系统变量的解释,或者存在与过程之间继承环境变量的方式相关的问题。
将%M2%
添加到用户路径中,或者使M2
成为系统而不是用户环境变量。