GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum reicht das Löschen des Bash-Verlaufs nicht aus?

In einigen Fällen (einige Bash-Versionen) wird Folgendes ausgeführt:

$ history -c; history -w

Oder einfach

$ history -cw

Löscht den Verlauf im Speicher (Aufwärts- und Abwärtspfeil haben keine aufzulistenden Befehle) und schreibt dann das zum $HISTFILE Datei (wenn die $HISTFILE wird von der laufenden Bash-Instanz abgeschnitten).

Manchmal entscheidet sich Bash dagegen nicht kürzen Sie die $HISTFILE Datei sogar mit histappend Option nicht gesetzt und $HISFILEZIZE auf 0 setzen.

In solchen Fällen funktioniert die Nuke-Option immer:

history -c; >$HISTFILE

Dadurch wird die Verlaufsliste der im Speicher aufgezeichneten Befehle und aller zuvor in einer Datei aufgezeichneten Befehle gelöscht. Dadurch wird sichergestellt, dass die laufende Shell weder im Speicher noch auf der Festplatte einen aufgezeichneten Verlauf hat. Andere laufende Instanzen von bash (wo der Verlauf aktiv ist) können jedoch eine vollständige Kopie der Befehle haben, die aus $HISTFILE gelesen wurden wenn bash gestartet wurde (oder wenn ein history -r wird ausgeführt).

Wenn es auch ist erforderlich, dass nichts anderes (keine neuen Befehle) der aktuellen Sitzung in die Verlaufsdatei geschrieben werden, dann unset HISTFILE wird eine solche Protokollierung verhindern.


bash hat einen Sitzungsverlauf im Speicher, der in die Datei geschrieben wird, wenn die Shell-Variable HISTFILE wird auf einen Dateinamen gesetzt, wenn bash Ausgänge.

Wenn Sie die Datei löschen, auf die HISTFILE zeigt , setzen Sie diese Variable zurück und beenden Sie bash , hinterlässt diese Shell-Sitzung keinen dauerhaften Verlauf.

Der HISTFILE konnte nicht deaktiviert werden Variable, aber das Löschen der Datei würde nur den persistenten Verlauf leeren, aber der Verlauf der aktuellen Sitzung würde gespeichert, wenn die Shell beendet wird.


Linux
  1. Befehl nicht in Bash gefunden behoben

  2. Warum funktioniert die Bash-Prozesssubstitution bei einigen Befehlen nicht?

  3. Warum ist Nullglob kein Standard?

  4. Warum speichert Bash keine Befehle, die mit Leerzeichen beginnen?

  5. Automatische Bereinigung des Bash-Verlaufs?

Verlaufsbefehl in Linux (Bash-Verlauf)

Array in Bash nicht gefunden

bash sh - Befehl nicht gefunden

Suchposition im Bash-Verlauf zurücksetzen

Warum ist Bash überall (in den meisten, wenn nicht allen Linux-Distributionen)?

Gewusst wie:Unbegrenzter Bash/Shell-Verlauf?