hash
hash - Verwaltung der Hash-Tabelle für Kommando-Pfade
Beschreibung
Installation
Anwendungen
Fehlerbehebung
Syntax
Optionen
Parameter
Umgebungsvariablen
Exit-Status
Konfiguration
Dateien
Sicherheit
Dokumentation
RFC
Man-Pages
Info-Pages
Siehe auch
Links
Projekt-Homepage
Weblinks
Einzelnachweise
Testfragen
Testfrage 1
Antwort1
Testfrage 2
Antwort2
Testfrage 3
Antwort3
Testfrage 4
Antwort4
Testfrage 5
Antwort5
TMP
Beschreibung
- Ein angegebenes Kommando muss von der Shell gesucht werden
- Die Suche, vor allem wenn sie die Angaben aus PATH einschließt, kostet Zeit.
- Deswegen merkt sich die Bash die Zugriffspfade zu allen externen Kommandos in einer Hashtabelle.
- Hashtabelle wird zuerst konsultiert
- Nur wenn der Pfad zu einem Kommando dort nicht erfasst wird, werden die Verzeichnispfade durchsucht
- Es sei denn hashall ist nicht gesetzt (siehe set)
- Beim nächsten Zugriff auf das Kommando wird haman den Geschwindigkeitszuwachs spüren.
Pfad-Cache
$ hash
- (ohne Parameter) zeigt die Liste der gemerkten Pfade zu den Programmen an.
- Um die Zugriffe auf Programme zu beschleunigen, verwaltet die Bash einen internen Cache der Pfade auf bereits gestartete Programme.
- Wird ein Programm erneut gestartet, kann die zeitaufwendige Suche entlang des Pfades entfallen.
- Bei der Gelegenheit wird auch gleich angezeigt, wie oft das Programm gestartet wurde.
Verwerfen alle gespeicherten Pfade
$ hash -r
Anzeige der Hashtabelle
$ hash hits command 2 /bin/ls 1 /bin/mv 6 /bin/sh 8 /usr/bin/vi 1 /bin/chmod 3 /bin/date 1 /usr/bin/id 1 /usr/bin/man
Gleichnamigen Kommandos
- Liegt eines in der Hashtabelle vor, so kann auf das andere nur über die vollständige Pfadangabe zugegriffen werden
- Soll dieses "benachteiligte" Kommando nun vermehrt eingesetzt werden, ist ein Löschen der Hashtabelle mittels »-r« sinnvoll
$ hash -r $ hash hash: hash table empty
Indem »hash« mit einem oder mehreren Kommandonamen aufgerufen wird, werden diese Kommandos gesucht und in die Hashtabelle aufgenommen; sie werden jedoch nicht gestartet (sinnvoll ist dies eventuell in Startskripten).
Pfad zur Tabelle hinzufügen
$ hash -p <Pfad_zum_Kommando>
TMP
$ hash [-lr] [-p Pfadname] [-dt] [Name ...]
Programpfade merken oder anzeigen.
Ermittelt und speichert den vollständigen Pfadnamen jedes Kommandos NAME. Wenn keine Argumente angegeben werden, werden Informationen über gespeicherte Kommandod angezeigt.
Argumente
NAME Jeder NAME wird inPATH gesucht und in die Liste der gespeicherten Befehle hinzugefügt.
Exit-Status
Gibt Erfolg zurück, es sei denn, NAME wird nicht gefunden oder es wird eine ungültige Option angegeben.