Linux / Befehl which: Ausführbare Dateien im PATH finden
Der which Befehl durchsucht Verzeichnisse, die in PATH aufgelistet sind, und gibt einen passenden ausführbaren Pfad aus. Er ist praktisch, um ein externes Programm zu finden, aber Shell-Aliase, Funktionen und eingebaute Befehle werden besser mit type oder command -v diagnostiziert.
Ergänzende Befehle und Anwendungsfälle finden Sie in Essenzielle Linux-Befehle: Ein praktisches Nachschlagewerk nach Aufgabe.
Was ist der which-Befehl?
Eine typische Implementierung prüft PATH von links nach rechts und meldet die erste ausführbare Datei. Allerdings kann which ein externes Programm oder ein shellspezifisches Wrapper-Programm sein, sodass seine Optionen und der Umgang mit Aliases variieren können. Seine Ausgabe ist nicht immer identisch mit dem, was die aktuelle Shell ausführen wird.
Grundlegende Syntax
which [OPTION]... COMMAND...
Optionen und Randfälle können je nach Implementierung und Version variieren. Überprüfen Sie which --help und man which auf dem Zielsystem, bevor Sie sich auf implementierungsspezifisches Verhalten verlassen.
Grundlegende Verwendung von which
Einen ausführbaren Pfad finden
Die erste passende ausführbare Datei im PATH wird ausgegeben.
which python3
Mehrere Befehle prüfen
Geben Sie mehrere Befehlsnamen an, um sie in einem Aufruf zu überprüfen.
which sh awk sed
Alle PATH-Treffer anzeigen
Gängige Implementierungen unterstützen -a für jede passende ausführbare Datei in PATH-Reihenfolge.
which -a python3
Einschränkungen der Ausgabe des Pfads ausführbarer Dateien
which zeigt den Pfad der ausführbaren Datei, die in PATH gefunden wurde. Abhängig vom System und der Shell kann derselbe Befehl an unterschiedlichen Stellen gefunden werden.
which ls
Beispielausgabe:
/usr/bin/ls
Shell-Aliase oder Funktionen können zwischen der which-Ausgabe und der tatsächlichen Interpretation des eingegebenen Befehls unterschiedlich sein. Um zu prüfen, was die aktuelle Shell ausführen wird, verwenden Sie type ls oder command -V ls.
Wichtige Optionen
| Option | Zweck |
|---|---|
-a, --all |
Alle PATH-Treffer drucken, anstatt nur den ersten. |
--skip-alias |
In einigen GNU-which-Versionen Alias-Behandlung überspringen. |
--skip-functions |
In einigen GNU-which-Versionen Shell-Funktionsbehandlung überspringen. |
--version |
Die installierte Implementierung und Version identifizieren. |
Praktische Beispiele
Befehlspriorität prüfen
Alle Übereinstimmungen mit der Reihenfolge der Verzeichnisse in PATH vergleichen.
which -a python3 printf '%s\n' "$PATH"
Die Shell fragen, was sie auflöst
Diese Shell-Befehle können Aliase, Funktionen, eingebaute Befehle und externe Dateien identifizieren.
type -a ls command -V ls command -v ls
Verfügbarkeit in einem Skript testen
Für portablen POSIX-Shell-Code verwenden Sie den Exit-Status von command -v, anstatt die Ausgabe von which zu analysieren.
if command -v curl >/dev/null 2>&1; then printf '%s\n' 'curl is available' fi
which und verwandte Befehle
| Befehl | Hauptrolle | Geeignet für |
|---|---|---|
which |
Durchsuchen Sie PATH nach externen ausführbaren Dateien | Schnelle Pfadabfrage |
command -v |
Shell-Befehlsauflösung melden | Portable Skriptprüfungen |
type |
Klassifizieren Sie Aliase, Funktionen, eingebaute Befehle und Dateien | Interaktive Diagnose |
whereis |
Programmspezifische Speicherorte durchsuchen | Binärdateien, Quelltext und Handbücher |
Wichtige Hinweise
Aliase und Funktionen können übersehen werden
Die Shell kann einen Alias oder eine Funktion vor einer externen ausführbaren Datei wählen. Bestätigen Sie mit type.
Implementierungen unterscheiden sich
Gehen Sie nicht davon aus, dass optionale Flags in jeder Umgebung verfügbar sind.
Ein Pfad ist kein Sicherheitsurteil
Das Auffinden einer ausführbaren Datei überprüft nicht ihren Besitzer, ihre Berechtigungen, ihre Integrität oder Vertrauenswürdigkeit.
FAQ
Bedeutet keine Ausgabe, dass der Befehl nicht installiert ist?
Es bedeutet, dass kein ausführbares Programm im PATH gefunden wurde. Der Name könnte immer noch ein Shell-Builtin, eine Funktion oder ein Alias sein.
Wie zeige ich jeden passenden Pfad an?
Verwenden Sie which -a COMMAND, wenn die Implementierung dies unterstützt.
Sollten Skripte which verwenden?
Für portable Shell-Skripte ist command -v im Allgemeinen der bessere Verfügbarkeitstest.
Wie unterscheidet sich whereis?
which durchsucht PATH nach ausführbaren Dateien; whereis durchsucht bekannte Orte nach Binärdateien, Quellcode und Handbuchseiten.
Weitere Angaben zu Syntax, Implementierung und Verfügbarkeit finden Sie unter GNU which Projekt.




