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