it-swarm.com.de

Warum reicht es nicht aus, den Bash-Verlauf zu löschen?

Früher dachte ich, das Löschen meines Bash-Verlaufs würde ausreichen, um meinen Bash-Verlauf zu löschen, aber gestern hat meine Katze auf der rechten Seite meiner Tastatur herumgespielt, und als ich wieder in meinen Computer zurückkehrte, sah ich etwas, das ich vor einem Monat eingegeben hatte, und dann fing ich an Drücken Sie alle Tasten wie verrückt und suchen Sie nach dem, was es hätte auslösen können. Es stellt sich heraus, dass die UPARROW-Taste meinen Bash-Verlauf auch nach dem Löschen von .bash_history anzeigt.

Wie kann ich meinen Bash-Verlauf wirklich löschen?

15
bunden

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 (der Aufwärts- und Abwärtspfeil enthält keine Befehle zum Auflisten) und schreibt dann that in die Datei $HISTFILE (Wenn der $HISTFILE Von der Datei abgeschnitten wird Bash-Instanz ausführen).

Manchmal wählt bash, nicht die $HISTFILE - Datei abzuschneiden, selbst wenn die Option histappend deaktiviert und $HISFILEZIZE Auf 0 gesetzt ist.

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 ausgeführte Shell weder im Speicher noch auf der Festplatte einen aufgezeichneten Verlauf hat. Bei anderen ausgeführten Bash-Instanzen (bei denen der Verlauf aktiv ist) wird möglicherweise eine vollständige Kopie der Befehle aus $HISTFILE Gelesen, als Bash gestartet wurde ( oder wenn ein history -r ausgeführt wird).

Wenn auch erforderlich ist, dass nichts anderes (keine neuen Befehle) der aktuellen Sitzung in die Verlaufsdatei geschrieben wird, verhindert unset HISTFILE Eine solche Protokollierung.

26
Isaac

bash hat einen Sitzungsverlauf im Speicher, der in eine Datei geschrieben wird, wenn die Shell-Variable HISTFILE beim Beenden von bash auf einen Dateinamen gesetzt wird.

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

Wenn Sie die Variable HISTFILE nicht deaktivieren, aber die Datei löschen, wird nur der persistente Verlauf geleert, der Verlauf der aktuellen Sitzung wird jedoch beim Beenden der Shell gespeichert.

9
Kusalananda