Der Suchpfad ist eine Verzeichnisliste, die in einem Betriebssystem angibt, in welchen Unterverzeichnissen innerhalb der Verzeichnisstruktur nach ausführbaren Dateien gesucht werden soll.[1] Eine vollständigere Bezeichnung im Deutschen ist daher auch Suchpfad für Programme.[2] Der Suchpfad wird über die Umgebungsvariable PATH
definiert, etwa unter Unix-Systemen wie beispielsweise macOS und Linux, sowie unter PC-kompatiblen Systemen mit DOS (historisch) und dessen Nachfolger Windows.
Unix
Unter unix-artigen Systemen nimmt die Unix-Shell das erste Wort auf der Kommandozeile als das Kommando oder als den Programmnamen. Während ein Kommando intern von der Shell selbst bereitgestellt wird, muss nach Programmen in Form von ausführbaren Dateien im Unix-Dateisystem gesucht werden, oder alternativ der gesamte Pfad angegeben sein. Bei Unix-Shells ist es historischer Standard, dass sogar Programmdateien im aktuellen Verzeichnis mit dem Pfad angegeben sein müssen, um ausgeführt zu werden:
# ls
MeinProgramm
# MeinProgramm
MeinProgramm: Kommando nicht gefunden.
# ./MeinProgramm
Mein Programm v.1 läuft...
Obwohl in diesem Beispiel eine ausführbare Datei mit dem Namen MeinProgramm
(Unix ist traditionell case-sensitiv) im aktuellen Verzeichnis vorhanden ist, wird diese von der Shell erst mit der Angabe des relativen Pfads ./
vor dem Programmnamen gefunden und ausgeführt. Ein Hinzufügen von .
für das jeweils aktuelle Verzeichnis in den Suchpfad ist zwar möglich (womit die Angabe von ./
vor dem Programmnamen entfallen würde), aus Sicherheitsgründen ist das jedoch meist nicht die Voreinstellung.[3][4][5][6]
Der Unix-Suchpfad nutzt den Doppelpunkt :
als Trennzeichen. Die angegebenen Verzeichnisse werden von links nach rechts nach dem aufzurufenden Programmnamen abgesucht.[2]
Um den aktuellen Suchpfad anzuzeigen, muss entweder die gesamte aktuelle Arbeitsumgebung (englisch environment) ausgegeben werden, oder nur die Umgebungsvariable PATH
:
# env
SHELL=/bin/sh
LANGUAGE=de:en_US
PWD=/home/max
LOGNAME=max
HOME=/home/max
LANG=de_DE.utf8
TERM=xterm
USER=max
PAGER=less
PATH=/bin:/usr/bin:/home/max/bin
MAIL=/usr/spool/mail/max
_=/bin/env
GROUP=users
# echo $PATH
/bin:/usr/bin:/home/max/bin
Zum Setzen oder Verändern des Suchpfads wird die Umgebungsvariable in üblicher Form gesetzt, was von der jeweiligen Shell abhängt.
DOS und Windows
Unter den PC-Betriebssystemen DOS und Windows kann mit dem Kommandozeilenbefehl PATH
die gleichnamige Systemvariable festgelegt werden.
PATH [d:]Pfad [;Pfad]
Als Trennzeichen dient das Semikolon ;
, die Angabe eines Laufwerksbuchstabens ist optional. Ohne weitere Paramenter gibt PATH
den aktuellen Suchpfad aus. Mit PATH ;
wird unter DOS der gesamte Suchpfad der aktiven Shell gelöscht.[7]
Einzelnachweise
- ↑ Wie richte ich eine PATH-Systemvariable ein oder ändere diese? In: Java-Hilfecenter. Abgerufen am 4. August 2022: „PATH ist die Systemvariable, die das Betriebssystem verwendet, um über die Befehlszeile oder das Terminalfenster nach erforderlichen ausführbaren Dateien zu suchen.“
- ↑ a b Jürgen Gulbins, Karl Obermayr: UNIX System V.4 – Begriffe, Konzepte, Kommandos, Schnittstellen. 4. überarbeitete Auflage. Springer-Verlag, 1995, ISBN 978-3-642-63373-7, 4.1 Der Suchpfad für Programme, S. 87 ff. (eingeschränkte Vorschau in der Google-Buchsuche).
- ↑ Mark G. Sobell, Peter Seebach: A Practical Guide to UNIX for Mac OS X Users. Pearson Education, Inc., 2005, ISBN 0-13-186333-9, 8: The Bourne Again Shell, S. 286 (englisch, eingeschränkte Vorschau in der Google-Buchsuche): “It is common for Superuser PATH to omit the working diretory entirely. … Putting the working directory first in PATH can create a security hole.”
- ↑ PATH environment variable. In: AIX 7.2 Documentation. IBM, 16. Februar 2022, abgerufen am 4. August 2022 (englisch): „The PATH environment variable is an important security control. It specifies the directories to be searched to find a command. … Unauthorized changes to the PATH environment variable can enable a user on the system to ‘spoof’ other users (including root users). Spoofing programs (also called Trojan horse programs) replace system commands and then capture information meant for that command, such as user passwords.“
- ↑ Unix – Frequently Asked Questions, Section 2.13: What's wrong with having '.' in your $PATH ? (FAQs) In: Internet FAQ Archives. Advameg, Inc., abgerufen am 4. August 2022 (englisch).
- ↑ Jander: Is it safe to add . to my PATH? How come? (Internetforum) In: Unix & Linux. Stack Exchange, 22. Februar 2013, abgerufen am 4. August 2022 (englisch).
- ↑ Ekkehard Kaier: Informationstechnische Grundbildung MS-DOS – Mit vollständiger Referenzliste. Vieweg, 1989, ISBN 978-3-528-04685-9, 1.5.3.3 Suchpfade einrichten mit PATH, S. 49 f. (eingeschränkte Vorschau in der Google-Buchsuche).