Der hash-Befehl in Linux speichert die Pfadinformationen von ausführbaren Dateien in einer internen Liste, um den Zugriff auf diese Dateien zu beschleunigen. Statt jedes Mal den vollständigen Pfad zu suchen, kann das System direkt auf die Informationen im Hash zugreifen, was die Ausführungszeit verkürzt. Wenn ein Benutzer einen Befehl ausführt, überprüft hash zuerst, ob der Befehl bereits in der hash-Tabelle enthalten ist. Falls ja, wird der gespeicherte Pfad verwendet, um den Befehl auszuführen. Falls nein, wird der vollständige Pfad des Befehls gesucht und zur Hash-Tabelle hinzugefügt.

    Syntax

    hash [-lr] [-p file] [-dt] [name ...]

    Einige Beispiele für häufig verwendete Optionen sind:

    • -l: Listet die gespeicherten Pfade in einem Format auf, das als Eingabe wiederverwendet werden kann. Diese Option ist besonders nützlich, wenn die Liste der gehashten Pfade in einem Skript oder einer Konfigurationsdatei verwendet wird.
    • -r: Löscht alle gespeicherten Pfade.
    • -p path: Fügt den Pfad der angegebenen Datei dem Hash-Table hinzu.
    • -d: Löscht den Pfad der angegebenen Datei aus dem Hash-Table.
    • -t: Zeigt den Pfad der angegebenen Datei an.

    Beispiele

    Speichern des Pfads von der ausführbaren Datei für den Befehl ls in der hash-Tabelle

    Um den Pfad einer ausführbaren Datei zu speichern, verwendet man einfach das hash Kommando mit dem Namen der Datei:

    $ hash
    hash: hash table empty
    $ hash ls
    $ hash
    hits	command
       0	/bin/ls
    $

    Wenn der Befehl ls in der Shell ausführt wird, würde der gespeicherte Pfad verwendet werden, anstatt den Pfad jedes Mal neu zu suchen.

    Auflisten aller gespeicherten Pfade mit der Option -l

    $ hash
    hits	command
       0	/bin/ls
    $ hash -l
    builtin hash -p /bin/ls ls
    $

    Wir bekommen eine Liste aller gespeicherten Pfade, zusammen mit dem Namen der ausführbaren Datei. In einem Format, das verwendet werden kann, um es auf einem anderen Rechner wieder einzufügen.

    Löschen des Pfads für ls aus der hash-Tabelle mit der Option -d

    $ hash
    hits	command
       0	/bin/ls
    $ hash -d ls
    $ hash
    hash: hash table empty
    $ 

    Damit wird der Pfad der ausführbaren Datei für ls aus der Tabelle gelöscht.

    Hinzufügen des Pfads /usr/local/bin/ls zur hash-Tabelle mit der Option -p

    $hash -r
    $hash -p /usr/local/bin/ls ls
    $hash
    hits	command
       0	/usr/local/bin/ls
    $

    Mit dem Befehl fügen wir den Pfad /usr/local/bin/ls der hash-Tabelle hinzu. Wir können auch den Namen der Datei verwenden, um auf diese Datei zugreifen zu können, ohne den vollständigen Pfad angeben zu müssen.

    Anzeigen des Pfads für ls mit der Option -t

    $ hash
    hits	command
       0	/usr/local/bin/ls
    $ hash -t ls
    /usr/local/bin/ls
    $ 

    Löschen aller gespeicherten Pfade aus der hash-Tabelle mit der Option -r

    $ hash
    hits	command
       0	/usr/local/bin/ls
    $ hash -r
    $ hash
    hash: hash table empty
    $ 

    Damit haben wir alle gespeicherten Pfade aus der hash-tabelle gelöscht.

    Links