Warum benötigen manche Programme einen Pfadwert und andere nicht unter Windows?

564
JohnDoea

Warum Wenn ich Composer unter Windows 7/8/10 oder einigen UNIX-fähigen Programmen wie GNU Tar installiere, muss ich den Pfadwert festlegen. Wenn dies nicht der Fall ist, können sie von anderen Programmen nicht verwendet werden.

6
Befehlszeileninhalte funktionieren besser, wenn Sie sie in "% PATH%" haben. Sie können den neuen Befehl einfach in eine "Shell" eingeben. cylgalad vor 8 Jahren 1
Nun, es bedeutet, dass andere Programme nicht erraten müssen, in welchem ​​Verzeichnis sich das Programm befindet. Sie können den Namen der Exe kennen und cmd den Pfad prüfen lassen. barlop vor 8 Jahren 0

3 Antworten auf die Frage

3
TOOGAM

Ich habe dies für Microsoft Windows beantwortet. Ich sehe, da ist auch ein Linux-Tag hier. Nun, es gelten die gleichen Konzepte. (Weitere Linux-Hinweise werden im letzten Absatz erwähnt.)

Sie können Programme verwenden, die sich nicht in einem Verzeichnis befinden, das von der Umgebungsvariablen PATH angegeben wird. Es ist jedoch etwas weniger bequem.

Zum Beispiel führe ich oft 7-Zip aus, obwohl es nicht im Pfad ist. Anstatt die Befehlszeile mit "7z" zu starten, muss die Befehlszeile mit:
"C:\Program Files\7-Zip\7z.exe"

Das ist nicht ganz so schlimm, wie es aussieht, denn was ich tippe, ist in der Regel etwas mehr:
C: \ tabPro tab7 tab7tab

(Ich höre auf Signaltöne, die bei Tippfehlern auftreten können, und tabüberprüfe nach der letzten Erweiterung mit der Taste auch die Befehlszeile auf Genauigkeit, um sicherzustellen, dass sie das ausführt, was ich wollte.)

Ein Programm kann in der Befehlszeile überprüfen, wie Sie auf das Programm verwiesen haben, und Ihr aktuelles Verzeichnis überprüfen. Ein Programm könnte sich also anders verhalten, wenn es sich im PATH befindet. Dies ist jedoch unwahrscheinlich.

Eine alternative Lösung: Passen Sie die Umgebungsvariable PATH so an, dass sie auch das Verzeichnis enthält, in dem ein Programm installiert ist.

Eine andere alternative Lösung: Legen Sie die ausführbare Datei einfach in ein Verzeichnis ab, das sich bereits im PATH befindet. (Einige Programme sind jedoch komplizierter, da sie möglicherweise auch andere Dateien wie DLL-Dateien benötigen, die in ein solches Verzeichnis kopiert werden. Daher wird diese Vorgehensweise normalerweise nicht für Programme empfohlen, die Sie "installieren" müssen, indem Sie eine "Installation" ausführen Programm ". Bei einfachen ausführbaren Dateien, die nur ausgeführt werden können, ohne eine Reihe von Unterstützungsdateien zu benötigen, ist dies häufig möglich.)

In Linux gibt es einige geringfügige Unterschiede: Sie würden echo $statt " echo %PATH%" nur " " verwenden, anstelle von Backslashes Schrägstriche, statt 7za7-Zip 7z.exe. Wenn Sie den Pfad anpassen möchten, können Sie einen anderen Befehl verwenden, z. B. exportabhängig von der verwendeten Shell.)

Weitere Informationen zur Linux-Seite finden Sie in der späteren Frage des Fragestellers zu AskUbuntu: http://askubuntu.com/questions/715208/ JdeBP vor 8 Jahren 0
2
Pimp Juice IT

Warum benötigen manche Programme einen Pfadwert und andere nicht unter Windows?

Warum Wenn ich Composer unter Windows 7/8/10 oder einigen UNIX-fähigen Programmen wie GNU Tar installiere, muss ich den Pfadwert festlegen. Wenn dies nicht der Fall ist, kann er von anderen Programmen nicht verwendet werden.

PATH ist eine Umgebungsvariable unter Unix-ähnlichen Betriebssystemen, DOS, OS / 2 und Microsoft Windows, die eine Reihe von Verzeichnissen angibt, in denen sich ausführbare Programme befinden. Im Allgemeinen verfügt jeder ausführende Prozess oder jede Benutzersitzung über eine eigene PATH-Einstellung.

DOS, OS / 2 und Windows

Einige Programme fügen ihr Verzeichnis während der Installation vor dem Inhalt der Variablen PATH hinzu, um den Suchvorgang zu beschleunigen und / oder Betriebssystembefehle zu überschreiben. In der DOS-Ära war es üblich, ein PATH ;%PATH%oder eine SET PATH=;%PATH%Zeile hinzuzufügen AUTOEXEC.BAT.

Wenn ein Befehl in eine Befehlsshell eingegeben wird oder ein Systemaufruf von einem Programm zum Ausführen eines Programms ausgeführt wird, durchsucht das System zuerst das aktuelle Arbeitsverzeichnis und durchsucht dann den Pfad, wobei jedes Verzeichnis von links nach rechts untersucht wird und nach einem ausführbaren Dateinamen gesucht wird das entspricht dem angegebenen Befehlsnamen. Ausführbare Programme haben Dateinamenerweiterungen von EXEoder COMund Batch-Skripts haben Erweiterungen von BAToder CMD. Andere ausführbare Dateinamenerweiterungen können ebenfalls im System registriert werden.

Unix und Unix-like

Wenn ein Befehlsname vom Benutzer angegeben wird oder ein Exec-Aufruf von einem Programm aus erfolgt, durchsucht das System $PATHjedes Verzeichnis von links nach rechts in der Liste und sucht nach einem Dateinamen, der dem Befehlsnamen entspricht. Sobald das Programm gefunden wurde, wird es als untergeordneter Prozess der Befehlsshell oder des Programms ausgeführt, das den Befehl ausgegeben hat.

Quelle: PATH_ (Variable)

1
dxiv

In Windows kann eine Anwendung ihren Pfad unter \Software\Microsoft\Windows\CurrentVersion\App Pathsin der Registrierung registrieren. Windows merkt sich dann, wo die entsprechende .exe-Datei zu finden ist, ohne die PATHUmgebungsvariable aufzublähen.

Von der Antragsanmeldung :

Eine Anwendung, die pro Benutzer installiert wird, kann unter HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ App Paths registriert werden. Eine Anwendung, die für alle Benutzer des Computers installiert ist, kann unter HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ App Paths registriert werden.

Die unter App Paths gefundenen Einträge werden hauptsächlich für folgende Zwecke verwendet:

  • So ordnen Sie den Namen der ausführbaren Datei einer Anwendung dem vollständig qualifizierten Pfad dieser Datei zu.
  • Informationen an die PATH-Umgebungsvariable pro Anwendung und pro Prozess anhängen.

Eine Windows-Standardinstallation hat beispielsweise den Registrierungseintrag:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WORDPAD.EXE (Default)="%ProgramFiles%\Windows NT\Accessories\WORDPAD.EXE" 

Dadurch kann WordPad von Start / Ausführen aus gestartet werden, indem Sie es einfach eingeben wordpad(oder start wordpadan einer Cmd-Eingabeaufforderung), obwohl %ProgramFiles%\Windows NT\Accessorieses sich nicht im PATH befindet.

Es funktioniert mit Start im Startmenü. Dieser Ansatz funktioniert jedoch nicht mit der Eingabeaufforderung: Sie müssen die ausführbare Datei in PATH haben. Alexey Ivanov vor 8 Jahren 0
@AlexeyIvanov Es funktioniert wie beschrieben an der Eingabeaufforderung von cmd. Beachten Sie, dass Sie "start" verwenden müssen - "start wordpad" funktioniert, aber einfach "wordpad" nicht. (Auf der API-Ebene besteht der Unterschied darin, dass "start" ShellExecEx aufruft, das die "App-Pfade" erkennt und verwendet, während direkt CreateProcess aufgerufen wird, was nicht der Fall ist.) dxiv vor 8 Jahren 0
Wenn Sie in diesem Fall einen anderen Befehl verwenden müssen, "start", und nicht den Namen des Programms, das Sie ausführen möchten, funktioniert es nicht. Und dieses kleine Detail ist eine große Sache. (Ich weiß über den Unterschied, danke.) Alexey Ivanov vor 8 Jahren 0