Если две отдельные директории PATH содержат исполняемый файл с одинаковым именем, как Windows выберет?
Я нахожусь в процессе обновления PEAR (PHP) в моей системе. Сценарий обновления побуждает меня добавить "..\PHP\PEAR" в мою переменную PATH, чтобы я мог использовать "pear.bat". Тем не менее, я уже могу использовать pear.bat.
Просматривая свой путь PATH, я вижу, что у меня нет каталогов PEAR, только мой каталог PHP. Открыв свой каталог PHP, я вижу, что в базе есть "pear.bat". Но в подпапке PEAR PHP есть также pear.bat. Мне интересно, если я потерял установку PEAR.
Я отвлекся. Так что, если я оставлю.. \ PHP на моем пути, но добавлю..\PHP\PEAR - у каждого из них есть "pear.bat" - какой из них "выберет" Windows? Как решает Windows?
2 ответа
Первый матч выигрывает. pear.bat
в каталоге, который идет первым в %PATH%
это тот, который выполняется:
PATH=..\PHP\PEAR;..\PHP
:..\PHP\PEAR\pear.bat
выполняетсяPATH=..\PHP;..\PHP\PEAR
:..\PHP\pear.bat
выполняется
От http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/path.mspx?mfr=true:
Два или более идентичных имени файла в пути
Если в пути команд имеется два или более файлов с одинаковыми именем и расширением, Windows XP сначала ищет указанное имя файла в текущем каталоге, а затем ищет каталоги в пути команд в том порядке, в котором они перечислены в ПУТИ.
Согласен, это относится к Windows XP (я не могу найти информацию о других версиях Windows), но я не думаю, что это поведение изменилось.
РЕДАКТИРОВАТЬ: я мог бы найти некоторую информацию для Windows Server 2008 и Vista здесь: http://technet.microsoft.com/en-us/library/cc753427%28v=ws.10%29.aspx (почти тот же текст, что и выше):
Если два или более файлов в пути команды имеют одинаковые имя и расширение, путь сначала ищет указанное имя файла в текущем каталоге. Затем он ищет каталоги в пути команды в том порядке, в котором они перечислены в переменной среды PATH.
кажется, подтверждает предположение, что поведение не изменилось в разных версиях Windows.