我正在升级系统上的 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 版本之间的行为并没有发生改变的假设。