Der Befehl which findet den Speicherort einer ausführbaren Datei (Befehl), indem er in den Verzeichnissen sucht, die in der Umgebungsvariable PATH aufgelistet sind.
Was ist PATH?
PATH ist eine Umgebungsvariable, die der Shell und anderen Programmen mitteilt, in welchen Verzeichnissen sie nach ausführbaren Dateien suchen sollen. Sie besteht aus einer Liste von durch Doppelpunkte getrennten absoluten Pfaden zu Verzeichnissen, die die ausführbaren Dateien enthalten.
Um den Inhalt deiner PATH-Variable einzusehen, verwende den Befehl echo mit $PATH als Argument:
echo $PATH
Die Ausgabe sieht etwa so aus:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Wie benutzt man den Befehl which?
Die Syntax für den which-Befehl lautet wie folgt:
which [OPTIONEN] DATEINAME...
Wenn du zum Beispiel den vollständigen Pfad des ping-Befehls finden möchtest, gib Folgendes ein:
which ping
Die Ausgabe sieht dann etwa so aus:
/bin/ping
Du kannst dem which-Befehl auch mehrere Argumente geben:
which netcat uptime
Die Ausgabe enthält die vollständigen Pfade zu den ausführbaren Dateien von sowohl netcat als auch uptime:
/bin/netcat
/usr/bin/uptime
Die Suche erfolgt von links nach rechts. Wenn in den Verzeichnissen, die in der PATH-Umgebungsvariable aufgelistet sind, mehrere Treffer gefunden werden, gibt which nur den ersten aus. Wenn du alle Übereinstimmungen ausgeben möchtest, verwende die Option -a:
which -a touch
Die Ausgabe zeigt die vollständigen Pfade zu beiden touch-Befehlen:
/usr/bin/touch
/bin/touch
Normalerweise handelt es sich bei einer der ausführbaren Dateien nur um einen Symlink auf die andere. In manchen Fällen kann es jedoch vorkommen, dass du zwei Versionen desselben Befehls an verschiedenen Orten installiert hast oder völlig unterschiedliche Befehle mit demselben Namen.
Zusammenfassung
Der which-Befehl wird verwendet, um den Ort einer ausführbaren Datei zu finden, indem er in den Verzeichnissen sucht, die in der PATH-Umgebungsvariable aufgeführt sind.