Gibt es eine Möglichkeit, die Verlaufsverfolgung in Bash vorübergehend auszusetzen, um in eine Art "Inkognito" -Modus zu wechseln? Ich gebe Dinge in mein Terminal ein, die ich nicht aufzeichnen möchte, vertrauliche Finanzinformationen.
Gibt es eine Möglichkeit, die Verlaufsverfolgung in Bash vorübergehend auszusetzen, um in eine Art "Inkognito" -Modus zu wechseln? Ich gebe Dinge in mein Terminal ein, die ich nicht aufzeichnen möchte, vertrauliche Finanzinformationen.
Antworten:
Dies sollte das sein, wonach Sie suchen:
unset HISTFILE
man bash
Wenn HISTFILE nicht festgelegt ist oder wenn die Verlaufsdatei nicht beschreibbar ist, wird der Verlauf nicht gespeichert.
Wenn Sie es alternativ aus- und wieder einschalten möchten, ist die Verwendung möglicherweise einfacher set
:
set +o history
set -o history
set +o history
und verwenden, set -o history
um hin und her zu
unset HISTFILE
funktioniert nicht. set -/+o history
klappt wunderbar! danke
Setzen Sie HISTCONTROL="ignorespace"
mit bash ein Leerzeichen und gehen Sie jedem Befehl voran, den Sie nicht in der Historie aufzeichnen möchten. Falls Sie vergessen haben, Maßnahmen zu ergreifen, können Sie auch history -d <number>
einen bestimmten Eintrag löschen oder history -c
den gesamten Befehlsverlauf löschen .
Stellen Sie sicher, dass HISTCONTROL
enthält ignorespace
. Sie werden wahrscheinlich HISTCONTROL=ignorespace
( HISTCONTROL=ignoredups:ignorespace
oder etwas) zu Ihrem hinzufügen wollen ~/.bashrc
. Dann wird jede Befehlszeile, die mit einem Leerzeichen beginnt, aus dem Verlauf entfernt.
Eine andere Möglichkeit besteht darin, eine neue Bash-Sitzung zu starten, die ihren Verlauf nicht speichert.
$ bash
$ unset HISTFILE
$ sooper-sekret-command
$ exit
$ #back in the parent shell
Wenn Sie vermeiden möchten, mehrere Befehle zu speichern, und dennoch den Aufwärtspfeil verwenden möchten, um auf vorherige Befehle zuzugreifen, verwenden Sie:
$ bash # open a new session.
$ unset HISTFILE # avoid recording commands to file.
$ commands not recorded
.
.
$ exit
$
Es gibt vier Möglichkeiten (Ebenen), um zu steuern, wie Befehle gespeichert werden.
Die erste und einfachste ist die Verwendung ignorespace
(oder Ignoranz) von:
$ HISTCONTROL="ignorespace${HISTCONTROL:+:$HISTCONTROL}"
Auf diese Weise können Sie ein Leerzeichen vor den Befehlen verwenden, die nicht in der Speicherliste von gespeichert werden sollen history
. Infolgedessen wird auch vermieden, dass ein Befehl an die in aufgeführte Datei gesendet wird, da im Speicher kein Befehl gespeichert ist, der in die Datei gesendet werden könnte $HISFILE
.
Vermeiden Sie das Aufzeichnen von Befehlen in die Datei in $HISTFILE
:
$ unset HISTFILE
Wenn nicht festgelegt, wird der Befehlsverlauf beim Beenden einer Shell nicht gespeichert.
Null HISTFILE=''
und / oder HISTFILE=/dev/null
auf den gleichen Effekt eingestellt. Verstehen Sie, dass noch Befehle in der Speicherliste aufgezeichnet werden, und versuchen Sie es mit dem history
Befehl oder dem Aufwärtspfeil.
Warnung: Wenn HISTFILE zurückgesetzt wird, bevor die Shell existiert, kann alles, was im Speicher aufgezeichnet wurde, trotzdem in die Datei geschrieben werden.
Vermeiden Sie das Aufzeichnen neuer Befehle in der Verlaufsliste im Speicher. Und da es sich nicht im Speicher befindet, kann es nicht in einer Datei aufgezeichnet werden.
$ shopt -ou history # or set +o history
Erneut aktivieren mit shopt -os history
(oder set -o history
)
Entfernen Sie alle Befehle aus der Verlaufsliste im Speicher:
$ HISTSIZE=0
Alle Befehle werden gelöscht (aus dem Speicher) und daher kann natürlich nichts in der Datei gespeichert werden, bis die Variable wieder auf einen gültigen numerischen Wert gesetzt wird.
man history
, dass es für die meisten von uns nicht klappen wird.
HISTIGNORE
, die subsumes
die Funktion von HISTCONTROL
.
LESS=+'/^ *HISTI' man bash
(sind das nicht die "Manualpages"?). @ NathanBasanese
Es gibt eine einfache Möglichkeit, den Verlauf zu deaktivieren, sodass Befehle nicht in der .bash_history
Datei gespeichert werden.
Sie müssen das Leerzeichen oder den Tabulator vor jeden Befehl setzen, damit dieser Befehl nicht im Verlauf gespeichert wird. Zum Beispiel:
$ ls
print the list of file
$ history
ls
history
$ pwd
print the current working directory
$ history
ls
history
Der pwd
Befehl wird nicht im Verlauf gespeichert, da Whitespace im Vordergrund steht.
export HISTFILE=/dev/null
Das ist mein Weg. Nur für den Fall, dass das nicht gesetzte HISTORY / HISTFILE / HISTCONTROL, etc ... nicht funktioniert, hat das Exportieren nach / dev / null immer für mich funktioniert.
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16)
HISTFILE
wird nur beim Beenden von bash überprüft, daher funktioniert die erste Methode nicht wie sie ist (wenn Sie den Wert wiederherstellen, wird der Befehl gespeichert).set +o history
funktioniert wie angewiesen.