Which: Unterschied zwischen den Versionen
K Textersetzung - „== Syntax ==“ durch „== Aufruf ==“ |
|||
(19 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{DISPLAYTITLE: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 [https://wiki.ubuntuusers.de/Umgebungsvariable/ Umgebungsvariablen] $PATH angegebenen Verzeichnisse nach einer ausführbaren Datei gleichen Namens. | '''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 [https://wiki.ubuntuusers.de/Umgebungsvariable/ Umgebungsvariablen] $PATH angegebenen Verzeichnisse nach einer ausführbaren Datei gleichen Namens. | ||
== | == Aufruf == | ||
Die allgemeine Syntax von which lautet: | Die allgemeine Syntax von which lautet: | ||
which [-a] Befehl(e)... | 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. | 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 == | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! | ! Wert !! Beschreibung | ||
|- | |- | ||
| 0 || alle angegebenen Befehle wurden gefunden | | 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) | | 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 | | 2 || eine falsche Option wurde benutzt | ||
|} | |} | ||
[[ | == Hinweise== | ||
[[ | * Findet which keine ausführbare Datei, wird nichts ausgegeben. | ||
* which beherrscht keine [https://wiki.ubuntuusers.de/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 [https://wiki.ubuntuusers.de/ln/ symbolischen Verknüpfungen], | |||
* das Auflösen von [https://wiki.ubuntuusers.de/alias/ Alias], | |||
* und es berücksichtigt keine internen Shellbefehle. | |||
Für die letzten beiden Punkte gibt es das Shell-Built-in type (Infos siehe help type) | |||
== Anwendungen == | |||
<code>which</code> zeigt den vollständigen Pfad eines Kommandos an. Das ist nützlich, wenn Sie mehrere Versionen eines Programms besitzen und wissen möchten, welche von diesen bei einer Kommandoeingabe ohne Pfadhinweis ausgeführt wird: | |||
# which less | |||
/usr/bin/less | |||
<code>which</code> zeigt hier an, in welchem Pfad sich das Programm <code>less</code> befindet. Wenn ein Alias zu einem Programm existiert, wird auch dieser angezeigt: | |||
# which ls | |||
alias ls='ls --color=auto' | |||
/usr/bin/ls | |||
Die Kommandos <code>set</code> und <code>unset</code> werden von <code>which</code> nicht gefunden, weil es sich um interne Kommandos der Shell handelt: | |||
# which unset | |||
/usr/bin/which: no unset in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/ | |||
bin:/root/bin) | |||
=== 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 == | |||
[https://wiki.ubuntuusers.de/which/ Wiki Ubuntu Users] | |||
[[Kategorie:Linux/Suchen]] | |||
[[Kategorie:Linux/Befehl]] | |||
{{DEFAULTSORT:which}} |
Aktuelle Version vom 12. November 2024, 19:41 Uhr
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.
Aufruf
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-Built-in type (Infos siehe help type)
Anwendungen
which
zeigt den vollständigen Pfad eines Kommandos an. Das ist nützlich, wenn Sie mehrere Versionen eines Programms besitzen und wissen möchten, welche von diesen bei einer Kommandoeingabe ohne Pfadhinweis ausgeführt wird:
# which less /usr/bin/less
which
zeigt hier an, in welchem Pfad sich das Programm less
befindet. Wenn ein Alias zu einem Programm existiert, wird auch dieser angezeigt:
# which ls alias ls='ls --color=auto' /usr/bin/ls
Die Kommandos set
und unset
werden von which
nicht gefunden, weil es sich um interne Kommandos der Shell handelt:
# which unset /usr/bin/which: no unset in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/ bin:/root/bin)
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