Linux und macOS: Terminal-Verlauf richtig und vollständig löschen

von | 18.12.2012 | Tipps

Wenn ihr die Kommandozeile regelmäßig nutzt, ist der Befehlsverlauf euer bester Freund. Mit wenigen Tastendrücken ruft ihr komplexe Commands wieder auf. Aber manchmal wollt ihr genau diesen Verlauf komplett verschwinden lassen – sei es aus Datenschutzgründen, aus Sicherheitsgründen oder einfach für einen sauberen Neustart.

Der klassische Weg: history -c

Der bewährteste Befehl zum Löschen des Terminal-Verlaufs ist nach wie vor:
history -c

Dieser Befehl leert die aktuelle Session-History im Arbeitsspeicher. Bei den meisten modernen Shells (Bash, Zsh) funktioniert das zuverlässig. Allerdings gibt es einen Haken: Die Historie wird oft erst beim Schließen der Shell in die Verlaufsdatei geschrieben. Das bedeutet, dass eure Befehle trotz history -c beim nächsten Terminal-Start wieder da sein können.

Moderne Shells, moderne Probleme

Seit 2024 nutzen die meisten macOS-Systeme standardmäßig Zsh statt Bash. Unter Linux haben sich ebenfalls alternative Shells wie Fish oder Zsh etabliert. Jede Shell verwaltet ihren Verlauf anders:

Bash: Speichert in ~/.bash_history
Zsh: Nutzt ~/.zsh_history oder ~/.zhistory
Fish: Verwendet ~/.local/share/fish/fish_history

Um herauszufinden, welche Shell ihr verwendet, tippt einfach:
echo $SHELL

Die vollständige Lösung

Für eine wirklich saubere Löschung kombiniert ihr mehrere Befehle:

history -c && history -w

Der Parameter -w schreibt den (nun leeren) Verlauf sofort in die Datei. Alternativ könnt ihr die Verlaufsdatei direkt löschen:

Für Bash:
rm ~/.bash_history && history -c

Für Zsh:
rm ~/.zsh_history && fc -p

Für Fish:
history clear

Selektives Löschen für mehr Kontrolle

Manchmal wollt ihr nicht alles löschen, sondern nur bestimmte Befehle. Moderne Shells bieten dafür elegante Lösungen:

Einzelne Einträge löschen:
history -d ZEILENNUMMER

Findet erst die Zeilennummer mit history | grep "SUCHBEGRIFF", dann löscht den entsprechenden Eintrag.

Befehle mit bestimmten Mustern löschen:
In Zsh könnt ihr mit Wildcards arbeiten:
fc -R && fc -W nach dem Bearbeiten der ~/.zsh_history

Präventive Maßnahmen

Manchmal ist es besser, sensible Befehle gar nicht erst zu speichern. Dafür gibt es mehrere Strategien:

Inkognito-Modus:
Startet eine neue Shell-Session ohne Verlauf:
HISTFILE=/dev/null bash

Leerzeichen-Trick:
In den meisten Shell-Konfigurationen werden Befehle, die mit einem Leerzeichen beginnen, nicht gespeichert:
ssh user@geheimer-server.com

Temporär deaktivieren:
set +o history (deaktiviert)
set -o history (aktiviert wieder)

Automatisierung und Shell-Profile

Für regelmäßige Reinigung könnt ihr Aliase in eurer Shell-Konfiguration (~/.bashrc, ~/.zshrc) anlegen:

alias cleanhist='history -c && history -w && echo "Verlauf gelöscht"'

Oder ihr begrenzt die Verlaufsgröße von vornherein:
HISTSIZE=500
HISTFILESIZE=500

Cloud-Shells und Container

Bei modernen Entwicklungsumgebungen wie GitHub Codespaces, Google Cloud Shell oder Docker-Containern funktionieren die Standard-Befehle meist problemlos. Beachtet aber, dass der Verlauf bei Container-Neustarts oft automatisch gelöscht wird.

Überprüfung des Erfolgs

Um zu testen, ob das Löschen funktioniert hat, verwendet:
history

Im Idealfall seht ihr nur die letzten Befehle seit dem Löschen. Startet zusätzlich ein neues Terminal-Fenster, um sicherzugehen, dass auch die persistente Speicherung funktioniert hat.

Sicherheitshinweis

Denkt daran: Der Befehlsverlauf ist nur eine von vielen Spuren, die ihr im System hinterlasst. Logs, Browser-Cache und andere Systemdateien können weiterhin Informationen enthalten. Für wirklich sensitive Operationen solltet ihr zusätzliche Sicherheitsmaßnahmen treffen.

Zuletzt aktualisiert am 24.04.2026