[[Vorlage(Getestet, general)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis()]] [[Bild(Wiki/Icons/terminal.png, 48, align=left)]] '''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 [:Umgebungsvariable:Umgebungsvariablen] ``$PATH`` angegebenen Verzeichnisse nach einer ausführbaren Datei gleichen Namens. = Installation = Das Programm '''which''' ist im essentiellen Paket * '''debianutils''' von Ubuntu enthalten und ist deshalb auf jedem System installiert. = Benutzung = Die allgemeine Syntax von '''which''' lautet [1]: {{{#!vorlage Befehl 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 = Die möglichen Rückgabewerte von which sind: ||<-2 tablestyle="width: 95%;" cellstyle="background-color: #E2C890; text-align: center;">'''Rückgabewerte von which'''|| || '''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 [:Bash#Wildcards: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 [:ln:symbolischen Verknüpfungen], * das Auflösen von [:Shell/alias: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 == {{{#!vorlage Befehl which which # Sucht nach sich selber /usr/bin/which }}} {{{#!vorlage Befehl which -a which # Sucht nach allen ausführbaren Dateien mit dem Namen which /usr/bin/which /bin/which }}} {{{#!vorlage Befehl which kill cp # Sucht nach zwei Befehlen /bin/kill /bin/cp }}} == Shellskript == {{{#!code bash #! /bin/sh RETWHITCH=`which $1` if [ "$?" -eq '0' ]; then echo "Programm existiert und ist hier "$RETWHITCH" zu finden." else echo "Programm existiert nicht" fi }}} = Links = * [:Shell/Befehlsübersicht:] {Übersicht} Übersicht über verschiedene Shell-Befehle # tag: Shell