1. Home
  2. Linux
  3. Systemadministration
  4. Command History Konfiguration

Command History Konfiguration

Die Command History in Linux Shell Umgebungen ist ein sehr nützliches Werkzeug um automatisch eine Dokumentation der ausgeführten Kommandos zu erstellen. Die History ist automatisch aktiviert, kann jedoch um etliche sinnvolle Funktionen erweitert werden:

Datum der Eingabe protokollieren

# echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bash_profile

Kommandopuffer erhöhen

Standardmäßig werden in der History eines Debian System nur 500 Kommandos protokolliert. Um eine umfassende Liste (nahezu) aller Kommandos zu erhalten, ist es sinnvoll den Puffer zu erhöhen. Hier auf 10.000:

# echo 'export HISTSIZE=10000' >> ~/.bash_profile

Abgesetzte Kommandos sofort abspeichern

Wer mit mehreren Konsolensitzungen gleichzeitig arbeitet stößt früher oder später auf das Problem, dass eingegebene Kommandos in der History fehlen. Dies ist durch das grundsätzliche Handling der History bedingt.

Wenn eine Konsole A gestartet wird, liest die Shell den Inhalt der Datei .bash_history in ihren Speicher. Werden nun Kommandos eingegeben, werden diese erst nur im Puffer an den eingelesenen Inhalt angehängt. Beim Schließen der Konsole wird die Datei .bash_history mit dem Inhalt des Puffers überschrieben.

Haben Sie nun zwei Konsolensitzungen A und B geöffnet und werden diese zB gleichzeitig gestartet, haben beide Konsolensitzungen den identischen Inhalt aus der Datei .bash_history geladen, entwickeln sich aber unterschiedlich weiter, weil idR in jeder Konsole andere Kommandos eingegeben werden. Wird nun Konsole A geschlossen, wird der Puffer dieser Konsole in die Datei .bash_history geschrieben. Wird nun aber Konsole B geschlossen passiert das gleiche, jedoch werden die Eingaben der Konsole A dann mit dem aktuellen Inhalt der Konsole B überschrieben.

Das ganze lässt sich abschalten, in dem man die Shell dazu auffordert jedes Kommando sofort in die Datei .bash_history zu speichern. Dazu sind folgende Einstellungen in der Datei .bash_profile vorzunehmen:

shopt -s histappend
PROMPT_COMMAND="history -a;$PROMPT_COMMAND"

Das shopt-Kommando zeigt und ändert den Status der Variablen zur Steuerung der optionalen Funktionen der Bash. Der histappend Parameter führt dazu, dass alle neuen Kommandos in der .bash_history angehängt werden und stellt sicher, dass mehrere Konsolen den Verlauf der jeweils anderen nicht überschreiben.

Um zu gewährleisten, dass die eingegebenen Kommandos nicht verloren gehen, falls die Bash abnormal beendet wird, kann das Shell Builtin Kommando history -a verwendet werden, um ein sofortiges Schreiben aller neuen History-Zeilen zu veranlassen. Das kann automatisiert werden, indem sie zur Variable PROMPT_COMMAND hinzugefügt wird. Diese Variable enthält einen Befehl, der ausgeführt wird, bevor ein neuer Command Prompt angezeigt wird, und wird daher nach der Ausführung jedes interaktiven Befehls ausgeführt. Mit dem neu Belegen der PROMPT_COMMAND Variable wird verhindert, dass bereits vorhandene Parameter überschrieben werden.

Das ganze Setup hat jedoch auch einen Haken. Wenn Sie vorher gewohnt waren die History der vorausgegangenen Kommandos zu benutzen, müssen Sie nun damit rechnen, dass das letzte Kommando nicht jenes ist, welches Sie in dieser Konsole eingetippt haben, sondern jenes ist, welches Sie in irgendeiner Konsole als letztes eingetippt haben. Schlimmer noch, wenn mehrere Personen gleichzeitig mit dem gleichen Benutzer in ihren jeweiligen Konsolen arbeiten, muss man davon ausgehen, dass das letzte Kommando auch von anderen Benutzern stammen könnte. Da empfiehlt es sich wachsam zu sein!

Einlesen der neuen Konfiguration

Um die neuen Einstellungen wirksam zu machen, können Sie sich entweder vom System ab- und wieder anmelden oder die editierte Konfigurationsdatei neu einlesen:

# source ~/.bash_profile
Updated on 26. Oktober 2022
Was this article helpful?

Related Articles