Wenn zwei separate PATH-Verzeichnisse eine ausführbare Datei mit demselben Namen enthalten, wie wählt Windows aus?

1533
Coldblackice

Ich bin gerade dabei, PEAR (PHP) auf meinem System zu aktualisieren. Das Upgrade-Skript ermutigt mich, meinem Pfad ".. \ PHP \ PEAR" hinzuzufügen, damit ich "pear.bat" verwenden kann. Ich kann pear.bat jedoch bereits verwenden.

Wenn ich in meinen PFAD schaue, sehe ich, dass ich keine PEAR-Verzeichnisse habe, nur mein PHP-Verzeichnis. Beim Öffnen meines PHP-Verzeichnisses sehe ich, dass sich in der Basis ein "pear.bat" befindet. Es gibt aber auch eine pear.bat im PEAR-Unterordner von PHP. Ich frage mich, ob ich eine PEAR-Installation installiert habe.

Ich schweife ab. Wenn ich also .. \ PHP in meinem Pfad belasse, aber auch hinzufügen .. \ PHP \ PEAR - die beide eine "pear.bat" enthalten - welches wird Windows "wählen"? Wie entscheidet Windows?

2
Sie könnten es einfach ausprobieren und sehen. Da PATH eine geordnete Liste ist, würde ich erwarten, dass die erste gefundene Liste verwendet wird. martineau vor 11 Jahren 0

2 Antworten auf die Frage

3
Ansgar Wiechers

First match wins. The pear.bat in the directory that comes first in the %PATH% is the one that is executed:

  • PATH=..\PHP\PEAR;..\PHP: ..\PHP\PEAR\pear.bat is executed
  • PATH=..\PHP;..\PHP\PEAR: ..\PHP\pear.bat is executed
3
jaume

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

Zwei oder mehr identische Dateinamen im Pfad

Wenn der Befehlspfad über zwei oder mehr Dateien verfügt, die den gleichen Dateinamen und die gleiche Erweiterung haben, sucht Windows XP zuerst im aktuellen Verzeichnis nach dem angegebenen Dateinamen und durchsucht dann die Verzeichnisse im Befehlspfad in der Reihenfolge, in der sie sich befinden sind in PFAD aufgeführt .

Vereinbart, dies gilt für Windows XP (ich kann keine Informationen zu anderen Windows-Versionen finden), aber ich glaube nicht, dass sich dieses Verhalten geändert hat.

BEARBEITEN: Einige Informationen zu Windows Server 2008 und Vista finden Sie hier: http://technet.microsoft.com/de-de/library/cc753427%28v=ws.10%29.aspx (fast derselbe Text wie oben):

Wenn zwei oder mehr Dateien im Befehlspfad denselben Dateinamen und die gleiche Erweiterung haben, sucht path zuerst nach dem angegebenen Dateinamen im aktuellen Verzeichnis. Dann durchsucht es die Verzeichnisse im Befehlspfad in der Reihenfolge, in der sie in der Umgebungsvariablen PATH aufgeführt sind .

Dies scheint die Annahme zu bestätigen, dass sich das Verhalten in den Windows-Versionen nicht geändert hat.