Which
which (engl. "welche") sucht nach der Datei, die ausgeführt wird, wenn ein Befehl in die Shell eingegeben wird. Dazu durchsucht which nacheinander die in der Umgebungsvariablen $PATH angegebenen Verzeichnisse nach einer ausführbaren Datei gleichen Namens.
Syntax
Die allgemeine Syntax von which lautet:
which [-a] Befehl(e)...
Parameter
which kennt nur den optionalen Parameter -a (für engl. all = alle). Er bewirkt, dass die Suche nicht nach dem Fund der ersten passenden Datei beendet wird. Dadurch werden alle ausführbaren Dateien gefunden, die sich in den durch $PATH angegebenen Verzeichnissen befinden und den entsprechenden Namen haben.
Rückgabewerte
Wert | Beschreibung |
---|---|
0 | alle angegebenen Befehle wurden gefunden |
1 | mindestens ein angegebener Befehl wurde nicht gefunden (d.h. die Datei existiert nicht oder ist nicht ausführbar) |
2 | eine falsche Option wurde benutzt |
Hinweise
- Findet which keine ausführbare Datei, wird nichts ausgegeben.
- which beherrscht keine Wildcards. Es können jedoch mehrere Befehle, nach denen gesucht werden soll, als Parameter angegeben werden.
Im Gegensatz zu anderen GNU/Linux-Distributionen ist which in Ubuntu ein reines Shell-Skript und kein Perl- oder C-Programm. Deswegen beherrscht which z.B nicht
- das Auflösen von symbolischen Verknüpfungen,
- das Auflösen von Alias,
- und es berücksichtigt keine internen Shellbefehle.
Für die letzten beiden Punkte gibt es das Shell-Builtin type (Infos siehe help type)
Beispiele
Terminal
which which # Sucht nach sich selber /usr/bin/which
which -a which # Sucht nach allen ausführbaren Dateien mit dem Namen which /usr/bin/which /bin/which
which kill cp # Sucht nach zwei Befehlen /bin/kill /bin/cp
Shellskript
#! /bin/sh RETWHITCH=`which $1` if [ "$?" -eq '0' ]; then echo "Programm existiert und ist hier "$RETWHITCH" zu finden." else echo "Programm existiert nicht" fi