Überblick über which
`which`-Befehl informiert den Benutzer darüber, wo sich die ausführbare Datei des Befehls (z.B. `ls`, `python`, `nginx`), die in das Terminal eingegeben wird, tatsächlich befindet. Es funktioniert, indem es die in der `PATH`-Umgebungsvariable festgelegten Verzeichnisse der Reihe nach durchsucht und den absoluten Pfad der zuerst gefundenen ausführbaren Datei ausgibt. Wenn der Befehl nicht gefunden wird, gibt es entweder nichts aus oder gibt eine Fehlermeldung zurück.
Hauptfunktionen von which
`which`-Befehl wird hauptsächlich für folgende Zwecke verwendet:
Hauptanwendungsgebiete
- Standort des Befehls überprüfen: Überprüfen, wo sich die ausführbare Datei des angegebenen Befehls in den durch die `PATH`-Umgebungsvariable definierten Pfaden befindet.
- Versionsverwaltung: Wenn mehrere Versionen eines Befehls mit demselben Namen installiert sind, herausfinden, welche Version in der aktuellen Shell-Umgebung ausgeführt wird.
- Überprüfung der Programmexistenz in Skripten: Überprüfen, ob ein bestimmtes Programm in einem Shell-Skript installiert ist, und wenn nicht, eine Installation anregen oder eine Fehlerbehandlung implementieren.
- `PATH`-Umgebungsvariable debuggen: Überprüfen, ob die `PATH`-Einstellungen korrekt sind oder ob ein bestimmter Pfad in der `PATH`-Variable enthalten ist, sodass der Befehl korrekt gefunden wird.
Verständnis der `PATH`-Umgebungsvariable
Um die Funktionsweise des `which`-Befehls zu verstehen, ist ein Verständnis der `PATH`-Umgebungsvariable unerlässlich. `PATH` ist eine Umgebungsvariable, die eine durch Doppelpunkt (`:`) getrennte Liste von Verzeichnissen speichert, in denen die Shell nach ausführbaren Dateien sucht, wenn sie einen Befehl ausführt. Die Shell sucht in der Reihenfolge der in der `PATH`-Variablen aufgeführten Verzeichnisse nach dem Befehl.
Überprüfung der `PATH`-Umgebungsvariable
echo $PATH
Mit dem `echo`-Befehl kann der aktuelle Wert der `PATH`-Umgebungsvariable in der Shell überprüft werden.
Hauptoptionen des which-Befehls
`which`-Befehl ist einfach, bietet jedoch nützliche Optionen wie das Finden aller Übereinstimmungen oder das Ignorieren von Aliasen und Funktionen.
1. Grundsuche
2. Suchsteuerungsoptionen
Erzeugter Befehl:
Kombinieren Sie die Befehle.
Beschreibung:
`which` Führen Sie den Befehl aus.
Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.
Beispiele
Lernen Sie anhand verschiedener Anwendungsbeispiele des `which`-Befehls, wie Sie den Standort ausführbarer Befehle im System effizient erkennen können.
Standort der ausführbaren Datei des `ls`-Befehls finden
which ls
Gibt den absoluten Pfad an, wo sich der `ls`-Befehl tatsächlich befindet (in der Regel `/usr/bin/ls`).
Standorte aller ausführbaren Dateien des `python`-Befehls finden
which -a python
Wenn mehrere Versionen der `python`-Ausführungsdatei (z.B. `python2`, `python3`) im System installiert sind, gibt es alle entsprechenden Pfade in `PATH` aus.
Überprüfung der Existenz eines Befehls (Skriptnutzung)
if which grep > /dev/null; then
echo "Der grep-Befehl ist installiert."
else
echo "Der grep-Befehl konnte nicht gefunden werden. Eine Installation ist erforderlich."
fi
Ein Beispiel, das überprüft, ob der `grep`-Befehl im System installiert ist und je nach Ergebnis andere Aktionen ausführt.
Standort der tatsächlichen Binärdatei des `sudo`-Befehls finden
which --skip-alias --skip-functions sudo
`sudo` kann oft als Alias oder Shell-Funktion definiert werden, aber durch die Verwendung von `--skip-alias` und `--skip-functions` wird der Pfad zur tatsächlichen ausführbaren Datei gefunden.
Suche nach einem nicht existierenden Befehl
which nonexistent_command
Wenn `which` nach einem `nonexistent_command` sucht, das im System nicht installiert ist, wird nichts ausgegeben. Fehlermeldungen können mit `2>&1` umgeleitet werden, um sie anzuzeigen.