Which

Aus Foxwiki

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

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

Quellen

Wiki Ubuntu Users