whereis hat einen anderen Auftrag als which und type: Es sucht nicht nur nach der ausführbaren Datei, sondern auch nach Quellcode und Manpages. Außerdem nutzt es eine eigene, hartkodierte Pfadliste statt $PATH — was sehr praktisch sein kann oder zu Überraschungen führt, je nachdem, wo deine Programme installiert sind.

Was whereis macht

Standardmäßig sucht whereis nach drei Quellen gleichzeitig: Binary, Manpage und Source. Die Ausgabe ist eine einzige Zeile pro Programm.

Bash whereis im Default
whereis git
whereis ls
Output
git: /usr/bin/git /usr/share/man/man1/git.1.gz
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

Source-Dateien tauchen nur auf, wenn auch Source installiert ist (typischerweise via apt install programmname-src oder Distro-Äquivalent). Auf einem normalen Desktop-System bleibt die Source-Spalte daher meistens leer.

Optionen

Optionen
-b

Sucht nur nach dem Binary.

-m

Sucht nur nach der Manpage.

-s

Sucht nur nach den Source-Dateien.

-u

Zeigt nur Einträge, denen mindestens eine der drei Kategorien fehlt — praktisch, um unvollständige Installationen zu finden.

-l

Listet die kompletten Suchpfade auf, in denen whereis schaut.

-B / -M / -S

Begrenzen die Suche für Binaries, Manpages bzw. Sources auf eigene Verzeichnisse (gefolgt von -f).

Bash nur Manpages anzeigen
whereis -m grep
Output
grep: /usr/share/man/man1/grep.1.gz

Eigene Pfadliste statt $PATH

Anders als which durchsucht whereis nicht $PATH, sondern eine im Programm hartkodierte Liste — typischerweise /usr/bin, /usr/sbin, /usr/local/bin, /usr/share/man, /usr/X11R6/man und einige mehr. Die vollständige Liste zeigt whereis -l.

Die Konsequenz: Wenn du eine Binary in einem ungewöhnlichen Verzeichnis hast — /opt/firma/bin oder ~/.local/bin — und es zu deinem $PATH hinzugefügt hast, findet which sie problemlos, whereis aber nicht. Manche Distros lesen zusätzlich /etc/whereis.conf ein, falls vorhanden, aber darauf solltest du dich nicht verlassen.

Vergleich zu which und type

WerkzeugSucht inFindet zusätzlich
which$PATHnur Binaries
typevolle AuflösungsketteAliases, Funktionen, Builtins
whereishartkodierte PfadeManpages, Quellcode

whereis ist die richtige Wahl, wenn du gleichzeitig die Manpage finden willst — etwa um in einem Skript automatisch Doku-Pfade zu sammeln. Für reine Programmlokalisierung sind type und command -v ehrlicher.

Besonderheiten

Andere Pfadliste als which

Weil whereis nicht $PATH nutzt, kann das Ergebnis von which abweichen. Ein Tool in /opt/foo/bin mit /opt/foo/bin im $PATH wird von which gefunden, von whereis aber ignoriert. Mit whereis -l siehst du, in welchen Pfaden whereis tatsaechlich sucht.

Manpages an unerwarteten Orten

Die Manpage-Pfadliste umfasst neben /usr/share/man auch /usr/local/share/man, /usr/X11R6/man und Ähnliche. Wer Manpages selbst installiert (etwa unter ~/.local/share/man), wird von whereis nicht erfasst — man selbst durchsucht hingegen $MANPATH und manpath-Konfigurationsdateien.

Aliases und Funktionen sind unsichtbar

whereis schaut nur ins Dateisystem. Aliases, Shell-Funktionen und Builtins existieren ausschließlich im Speicher der laufenden Shell und tauchen daher nicht auf. Wenn du wissen willst, was tatsaechlich ausgeführt wird, ist type das richtige Werkzeug.

Source-Findung nur bei installierter Source

Die -s-Option findet Quellcode nur, wenn er auch im Dateisystem liegt — auf einem Standard-Server-Setup also so gut wie nie. Erst nach apt source paket oder apt install paket-src (Distro-spezifisch) tauchen Source-Pfade auf. Auf produktiven Systemen erwartet man von -s daher meistens leere Ergebnisse.

-u findet unvollständige Installationen

whereis -u -m -b * zeigt alle Programme im aktuellen Verzeichnis, denen entweder Binary oder Manpage fehlt. Praktisch, um Pakete zu finden, die ohne Doku installiert wurden — manche minimalen Container-Images strippen Manpages aus Platzgruenden.

Weiterführende Ressourcen

Externe Quellen

/ Weiter

Zurück zu Dateisystem

Zur Übersicht