Unterschied zwischen which, whereis und locate

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Hallo

Es geht um folgende Terminal-Befehle unter Ubuntu: - which - whereis - locate

streiche das Ubuntu, die sind auf allen Distributionen Zuhause.

Ich muss den Unterschied dieser erklären, werde aber aus den Definitionen im Web nicht schlau.

  • Wem und warum mußt Du das Erklären
  • Was ist denn an den Manpages nicht zu verstehen?

Es ist doch ganz einfach:

which dasprogramm

sieht in allen eingetragenen Pfaden der Variable $PATH nach ob es eine ausführbare Datei dasprogramm gibt - und nur da.

Das Kommando which, kann unterschiedliche Ausgaben machen, abhängig davon wer es ausführt. Es gibt ja Kommandos die nur root ausführen darf, diese sind dann in der Variablen eines normalen Users nicht drinnen.

whereis egalwas

Lokalisiert Quellen, Binärdateien und Manpage-Teile nach dem gesuchten String: egalwas.

locate irgendwas

Sucht in einer eigenen Datenbank, die man zuvor erstellen lassen muß, nach der Zeichenfolge irgendwas.

  • Dabei macht locate keinen Unterschied ob es sich um ein Verzeichnis, eine Datei, einen Link oder sonst was handelt.
    • Auch die Rechte des Befehls-startenden Benutzers werden hierbei gänzlich ignoriert.
    • Was aber nicht heißt das der Zugriff auf das Gefundene gewährt wird.

Die Datenbank für locate liegt in /var/lib/ oder in /var/cache/locate/ (abhängig von der benutzten Distribution) und ist eine Binärdatei, erzeugt wird diese mit dem Befehl:

updatedb

Wobei ich, wenn ich sie von Hand aktualisieren möchte, immer so vorgehe:

sudo updatedb 2>dev/null

um die Fehlermeldungen (z.B. wegen mangelnder Berechtigung) zu unterdrücken.

Linuxhase

Woher ich das weiß:eigene Erfahrung – Ich benutze seit 2007 Linux und habe LPIC101 und LPIC102

DoShi 
Beitragsersteller
 19.10.2013, 12:49

Wow! Vielen, vielen Dank für die ausführliche, verständliche und hervorragende Antwort, jetzt scheint mich das ganze wirklich einfacher als gedacht.

1

which - gibt den ersten gefundenen Pfad eines Programmes an

whereis - zeigt an, wo ein Programm installiert ist

locate - sucht die geforderte Datei, Anwendung u.a (ähnlich wie bei Windows die Suche).