Hash: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
Zeile 10: | Zeile 10: | ||
* Nur wenn der Pfad zu einem Kommando dort nicht erfasst wird, werden die Verzeichnispfade durchsucht | * Nur wenn der Pfad zu einem Kommando dort nicht erfasst wird, werden die Verzeichnispfade durchsucht | ||
** Es sei denn ''hashall'' ist nicht gesetzt (siehe [[set]]) | ** Es sei denn ''hashall'' ist nicht gesetzt (siehe [[set]]) | ||
* Beim nächsten Zugriff auf das Kommando wird | * Beim nächsten Zugriff auf das Kommando wird haman den Geschwindigkeitszuwachs spüren. | ||
== Pfad-Cache == | == Pfad-Cache == | ||
Zeile 19: | Zeile 19: | ||
* Wird ein Programm erneut gestartet, kann die zeitaufwendige Suche entlang des Pfades entfallen. | * 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. | * Bei der Gelegenheit wird auch gleich angezeigt, wie oft das Programm gestartet wurde. | ||
=== Verwerfen alle gespeicherten Pfade === | === Verwerfen alle gespeicherten Pfade === |
Version vom 28. Januar 2023, 15:29 Uhr
hash - Verwaltung der Hash-Tabelle für Kommando-Pfade
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>