如果两个单独的 PATH 目录包含同名的可执行文件,Windows 将如何选择?

如果两个单独的 PATH 目录包含同名的可执行文件,Windows 将如何选择?

我正在升级系统上的 PEAR (PHP)。升级脚本建议我将“..\PHP\PEAR”添加到 PATH,以便我可以使用“pear.bat”。但是,我已经能够使用 pear.bat。

查看我的 PATH,我发现没有任何 PEAR 目录,只有 PHP 目录。打开 PHP 目录,我看到基础目录中有一个“pear.bat”。但 PHP 的 PEAR 子文件夹中也有一个 pear.bat。我想知道我是否搞砸了 PEAR 安装。

我跑题了。所以如果我在路径中保留 ..\PHP,但同时添加 ..\PHP\PEAR —— 两者都有“pear.bat” —— Windows 会“选择”哪一个? Windows 如何决定?

答案1

第一个匹配获胜。pear.bat目录中最先出现的%PATH%是被执行的:

  • PATH=..\PHP\PEAR;..\PHP:..\PHP\PEAR\pear.bat被执行
  • PATH=..\PHP;..\PHP\PEAR:..\PHP\pear.bat被执行

答案2

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/path.mspx?mfr=true

路径中有两个或多个相同的文件名

如果命令路径中有两个或多个文件具有相同的文件名和扩展名,Windows XP 首先在当前目录中搜索指定的文件名,然后按照 PATH 中列出的顺序搜索命令路径中的目录

同意,这适用于 Windows XP(我找不到有关其他 Windows 版本的任何信息),但我认为这种行为没有改变。

编辑:我可以在这里找到一些有关 Windows Server 2008 和 Vista 的信息:http://technet.microsoft.com/en-us/library/cc753427%28v=ws.10%29.aspx(与上面的文字几乎相同):

如果命令路径中有两个或多个文件具有相同的文件名和扩展名,path 首先在当前目录中搜索指定的文件名。然后按照 PATH 环境变量中列出的顺序搜索命令路径中的目录

这似乎证实了 Windows 版本之间的行为并没有发生改变的假设。

相关内容