Twisty Impersonator在回答中所说的一切都是正确的。附加了用户路径变量的想法已得到强调,我相信这种差异的后果需要进一步处理。
路径=%路径%(系统);%Path%(用户)
当你执行一个可执行程序(或任何可执行脚本,如.bat,.vbs等),则无需提供完全合格的路径。
例如,要运行java,您可以输入以下任意一项:
C:/Program Files (x86)/Java/jre6/bin/java -version
java.exe -version
java -version
第一个示例使用完全限定的路径。这将始终在该确切路径上使用Java版本。
第二个示例将遍历%Path%环境变量中的每个目录,查找名为的可执行文件java.exe。它将运行找到的第一个,并停止搜索。如果在的java.exe某处有两个文件命名%Path%,则仅使用找到的第一个文件。
与第二个示例一样,第三个示例将迭代%Path%。中列出的目录。另外,由于未提供文件扩展名,因此可执行文件扩展名列表将按照%PATHEXT%环境变量中指定的顺序附加到文件名之后。如果有几个文件命名java.com,java.exe,java.bat,等地方上%Path%,只找到了第一个被使用。
您可以通过创建以下批处理文件来查看系统上的可执行路径扩展名列表:
@echo off
echo %PATHEXT%
pause
在我的机器上,这些是:
.COM; .EXE; .BAT; .CMD; .VBS; .VBE; .JS; .JSE; .WSF; .WSH; .MSC;的.py
这是什么意思呢?
在鲜明的对比到其他环境变量,用户路径不允许您覆盖系统路径。情况恰恰相反。在上面的示例中,在许多情况下您可能会更改Java的默认版本。但是,如果系统路径中已经列出了Java版本,则始终会首先找到该版本,因为从左到右依次搜索路径,并且在右侧附加了用户路径。 -左侧,系统路径在左侧。
我该怎么办?
如果您无权访问系统环境变量,则无法使用用户路径覆盖系统路径上的默认程序。(实际上,一定是这种方式,否则某些程序将无法正常运行,这将使您的系统容易受到恶意软件的篡改。没人希望那样。)
相反,如果必须使用特定版本,则必须使用标准路径。