Der Befehl which in Linux mit Beispielen
Wie lautet der Befehl?
Der Befehl which sucht in den Verzeichnissen, die in der Umgebungsvariablen PATH angegeben sind, nach dem Ort der ausführbaren Dateien. Wenn Sie einen Befehl in das Terminal eingeben, durchsucht Linux OS die in PATH aufgeführten Verzeichnisse, um die ausführbare Datei zu finden. Der Befehl which zeigt Ihnen die erste Instanz des Befehls an, die er in diesen Verzeichnissen findet.
Grundlegende Syntax von which
which [Optionen] [Befehl_name]
- [Optionen]: Optionale Flags, um das Verhalten des Befehls which zu ändern.
- [befehl_name]: Der Name des Befehls oder der ausführbaren Datei, die Sie suchen möchten.
Warum den Befehl which verwenden?
- Überprüfen Sie die Pfade ausführbarer Dateien: Hilft zu erkennen, welche Version einer ausführbaren Datei verwendet wird.
- Prüfen, ob ein Befehl installiert ist: Nützlich, um zu überprüfen, ob ein bestimmtes Programm installiert und in Ihrem PATH verfügbar ist.
- Skripte debuggen: Beim Debuggen von Skripten, um sicherzustellen, dass Ihr Skript die richtige Version eines Programms verwendet.
Beispiel 1: Den Pfad eines Befehls finden
Die häufigste Anwendung ist die Suche nach dem Pfad eines Befehls oder einer ausführbaren Datei. Wenn Sie zum Beispiel wissen wollen, wo sich die ausführbare Datei python3 befindet, führen Sie aus:
welches python3
Ausgabe:
/usr/bin/python3
Diese Ausgabe zeigt, dass sich die ausführbare Datei python3 im Verzeichnis /usr/bin befindet.
Beispiel 2: Prüfen mehrerer Befehle
Sie können which mit mehreren Befehlen gleichzeitig verwenden, um die Pfade für jeden einzelnen zu sehen:
which python3 gcc git
Ausgabe:
/usr/bin/python3
/usr/bin/gcc
/usr/bin/git
Dieser Befehl überprüft die Speicherorte von python3, gcc und git auf einmal und zeigt den Pfad für jeden Befehl an.
Beispiel 3: Verwendung von which mit Aliasen
Wenn Sie einen Alias für einen Befehl festgelegt haben, kann which manchmal auch helfen, den Alias zu identifizieren. Wenn Sie zum Beispiel einen Alias ls haben, der der Ausgabe Farbe hinzufügt:
alias ls='ls --color=auto'
welcher ls
Ausgibt:
alias ls='ls --color=auto'
/bin/ls
In diesem Fall zeigt das, dass ls ein Alias ist, der auf den Befehl /bin/ls verweist. Dies kann nützlich sein, um zu verstehen, wie benutzerdefinierte Aliase aufgelöst werden.
Beispiel 4: Suche nach allen Instanzen eines Befehls (Option -a)
Mit der Option -a können Sie alle Instanzen eines Befehls anzeigen, die in Ihrem PATH vorhanden sind, nicht nur die erste:
which -a python3
Ausgabe:
/usr/bin/python3
/usr/local/bin/python3
Dieses Beispiel zeigt alle Vorkommen von python3 in den im PATH angegebenen Verzeichnissen. Dies kann hilfreich sein, wenn Sie mehrere Versionen installiert haben und wissen wollen, wo diese zu finden sind.
Praktische Anwendungsfälle
Prüfen, ob ein Befehl installiert ist
Mit dem Befehl which kann schnell überprüft werden, ob ein bestimmtes Programm installiert und im PATH verfügbar ist. Zum Beispiel, um zu prüfen, ob curl installiert ist:
welches curl
Ausgabe:
/usr/bin/curl
Wenn die Ausgabe einen Pfad anzeigt, ist curl installiert und zugänglich. Wenn nichts zurückgegeben wird, bedeutet dies, dass der Befehl nicht in Ihrem PATH gefunden wird und möglicherweise installiert werden muss.
Fehlersuche bei PATH-Problemen
Wenn Sie Probleme damit haben, dass Befehle nicht gefunden werden, oder wenn eine andere Version eines Befehls als erwartet ausgeführt wird, kann dies dabei helfen herauszufinden, wo sich die ausführbare Datei befindet. Zum Beispiel, wenn Sie erwarten, eine bestimmte Version von Node zu verwenden, aber die falsche Version ausgeführt wird:
welcher Knoten
Ausgabe:
/usr/local/bin/node
Indem Sie den Pfad überprüfen, können Sie feststellen, ob eine andere als die vorgesehene Installation verwendet wird.
Einschränkungen der
Obwohl which ein nützliches Werkzeug ist, hat es einige Einschränkungen:
- Es durchsucht nicht alle Pfade: Der Befehl which durchsucht nur die Verzeichnisse, die in der Umgebungsvariablen PATH aufgeführt sind. Wenn ein Programm in einem Verzeichnis installiert ist, das nicht in PATH enthalten ist, wird which es nicht finden.
- Überprüft nicht alle Shells: which kann sich je nach Shell unterschiedlich verhalten (z. B. bash, zsh). Aliase und Funktionen, die für eine Shell spezifisch sind, werden möglicherweise in einer anderen nicht erkannt.
- Begrenzte Ausgabe für Aliase und Funktionen: Während which Aliase anzeigen kann, ist es nicht so umfassend wie andere Befehle wie type oder command -v, die mehr Details über Aliase und Funktionen liefern können.
Alternativen zu which
typ: Bietet detailliertere Informationen über einen Befehl, einschließlich der Angabe, ob es sich um einen Alias, eine Funktion oder einen integrierten Befehl handelt.
typ python3
command -v: Ähnlich wie which, wird es in Skripten wegen der besseren Portabilität oft bevorzugt.
befehl -v python3
Diese Alternativen können manchmal genauer sein oder zusätzliche Details im Vergleich zu which liefern.
Schlussfolgerung
Der Befehl which ist ein wertvolles Werkzeug für Linux-Benutzer, die ausführbare Dateien suchen, Befehlspfade überprüfen und Probleme im Zusammenhang mit dem PATH beheben müssen. Es ist einfach zu verwenden und kann beim Einrichten von Umgebungen Zeit sparen, da es sicherstellt, dass Sie die richtigen Versionen der installierten Programme verwenden. Auch wenn es seine Grenzen hat, ist es doch ein praktischer Befehl, um schnell herauszufinden, von wo aus Befehle in Ihrem Linux-System ausgeführt werden.
Wenn Sie wissen, wie man which effektiv einsetzt, können Sie Ihre Linux-Umgebung besser verwalten und häufige Probleme mit der Kommandozeile beheben. Viel Spaß beim Programmieren!