hash

Aus Foxwiki

hash - Verwaltung der Hash-Tabelle für Kommando-Pfade

Beschreibung[Bearbeiten | Quelltext bearbeiten]

Programmpfade merken oder anzeigen
  • Ermittelt und speichert den vollständigen Pfadnamen jedes Kommandos NAME
  • Wenn keine Argumente angegeben werden, werden Informationen über gespeicherte Kommandos angezeigt
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.

Installation[Bearbeiten | Quelltext bearbeiten]

hash ist ein interner Befehl der Bash und muss nicht separat installiert werden

Anwendungen[Bearbeiten | Quelltext bearbeiten]

Pfad-Cache[Bearbeiten | Quelltext bearbeiten]

$ 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 Pfade[Bearbeiten | Quelltext bearbeiten]

$ hash -r

Anzeige der Hashtabelle[Bearbeiten | Quelltext bearbeiten]

$ 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[Bearbeiten | Quelltext bearbeiten]

  • 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[Bearbeiten | Quelltext bearbeiten]

$ hash -p <Pfad_zum_Kommando>

Syntax[Bearbeiten | Quelltext bearbeiten]

$ hash [-lr] [-p Pfadname] [-dt] [Name ...]

Optionen[Bearbeiten | Quelltext bearbeiten]

Option Beschreibung
-d Vergessen des Speicherortes für jeden NAME
-l Anzeige in einem Format, das als Eingabe wiederverwendet werden kann
-p Pfadname verwendet PATHNAME als den vollständigen Pfadnamen von NAME
-r vergisst alle gespeicherten Pfade
-t gibt den Speicherort jedes NAMENS aus, wobei jedem Speicherort der entsprechende NAME vorangestellt wird, wenn mehrere NAMEs angegeben sind

Parameter[Bearbeiten | Quelltext bearbeiten]

Option Beschreibung
NAME Jeder NAME wird in PATH gesucht und in die Liste der gespeicherten Befehle hinzugefügt

Umgebungsvariablen[Bearbeiten | Quelltext bearbeiten]

Exit-Status[Bearbeiten | Quelltext bearbeiten]

Gibt Erfolg zurück, es sei denn, NAME wird nicht gefunden oder es wird eine ungültige Option angegeben.

Konfiguration[Bearbeiten | Quelltext bearbeiten]

Dateien[Bearbeiten | Quelltext bearbeiten]

Sicherheit[Bearbeiten | Quelltext bearbeiten]

Dokumentation[Bearbeiten | Quelltext bearbeiten]

RFC[Bearbeiten | Quelltext bearbeiten]

Man-Pages[Bearbeiten | Quelltext bearbeiten]

Info-Pages[Bearbeiten | Quelltext bearbeiten]

Siehe auch[Bearbeiten | Quelltext bearbeiten]

Links[Bearbeiten | Quelltext bearbeiten]

Projekt[Bearbeiten | Quelltext bearbeiten]

Weblinks[Bearbeiten | Quelltext bearbeiten]