Zum Inhalt springen

Which: Unterschied zwischen den Versionen

Aus Foxwiki
Thomaskarras (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
K Textersetzung - „ “ durch „ “
 
(8 dazwischenliegende Versionen desselben Benutzers 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.


== Syntax ==
== Aufruf ==
Die allgemeine Syntax von which lautet:
Die allgemeine Syntax von which lautet:
  which [-a] Befehl(e)...  
  which [-a] Befehl(e)...  


== Parameter ==
== Argumente ==
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.


Zeile 13: Zeile 15:
! Wert !! Beschreibung  
! 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)  
Zeile 29: Zeile 31:
* und es berücksichtigt keine internen Shellbefehle.
* und es berücksichtigt keine internen Shellbefehle.


Für die letzten beiden Punkte gibt es das Shell-Builtin type (Infos siehe help type)
Für die letzten beiden Punkte gibt es das Shell-Built-in type (Infos siehe help type)


== Anwendungen ==
== Anwendungen ==
Zeile 38: Zeile 40:
  # which ls
  # which ls
  alias ls='ls --color=auto'
  alias ls='ls --color=auto'
        /usr/bin/ls
    /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:
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
  # which unset
  /usr/bin/which: no unset in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/
  /usr/bin/which: no unset in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/
Zeile 45: Zeile 47:


=== Terminal ===
=== Terminal ===
  which which         # Sucht nach sich selber
  which which     # Sucht nach sich selber
  /usr/bin/which  
  /usr/bin/which  


  which -a which       # Sucht nach allen ausführbaren Dateien mit dem Namen which
  which -a which   # Sucht nach allen ausführbaren Dateien mit dem Namen which
  /usr/bin/which
  /usr/bin/which
  /bin/which  
  /bin/which  


  which kill cp       # Sucht nach zwei Befehlen
  which kill cp   # Sucht nach zwei Befehlen
  /bin/kill
  /bin/kill
  /bin/cp  
  /bin/cp  
Zeile 60: Zeile 62:
  RETWHITCH=`which $1`
  RETWHITCH=`which $1`
  if [ "$?" -eq '0' ]; then
  if [ "$?" -eq '0' ]; then
  echo "Programm existiert und ist hier "$RETWHITCH" zu finden."
  echo "Programm existiert und ist hier "$RETWHITCH" zu finden."
  else
  else
  echo "Programm existiert nicht"
  echo "Programm existiert nicht"
  fi
  fi


Zeile 68: Zeile 70:
[https://wiki.ubuntuusers.de/which/ Wiki Ubuntu Users]
[https://wiki.ubuntuusers.de/which/ Wiki Ubuntu Users]


[[Category:Linux:Suchen]]
[[Kategorie:Linux/Suchen]]
[[Kategorie:Linux/Befehl]]
 
{{DEFAULTSORT:which}}

Aktuelle Version vom 14. Juni 2026, 00:45 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)... 

Argumente

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-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

Wiki Ubuntu Users