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.
bash
command-history
Naftuli Kay
quelle
quelle
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.set +o history
und verwenden,set -o history
um hin und her zuunset HISTFILE
funktioniert nicht.set -/+o history
klappt wunderbar! dankeSetzen 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 auchhistory -d <number>
einen bestimmten Eintrag löschen oderhistory -c
den gesamten Befehlsverlauf löschen .quelle
Stellen Sie sicher, dass
HISTCONTROL
enthältignorespace
. Sie werden wahrscheinlichHISTCONTROL=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.
quelle
Wenn Sie vermeiden möchten, mehrere Befehle zu speichern, und dennoch den Aufwärtspfeil verwenden möchten, um auf vorherige Befehle zuzugreifen, verwenden Sie:
Es gibt vier Möglichkeiten (Ebenen), um zu steuern, wie Befehle gespeichert werden.
Die erste und einfachste ist die Verwendung
ignorespace
(oder Ignoranz) von: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
:Null
HISTFILE=''
und / oderHISTFILE=/dev/null
auf den gleichen Effekt eingestellt. Verstehen Sie, dass noch Befehle in der Speicherliste aufgezeichnet werden, und versuchen Sie es mit demhistory
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.
Erneut aktivieren mit
shopt -os history
(oderset -o history
)Entfernen Sie alle Befehle aus der Verlaufsliste im Speicher:
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.
quelle
man history
, dass es für die meisten von uns nicht klappen wird.HISTIGNORE
, diesubsumes
die Funktion vonHISTCONTROL
.LESS=+'/^ *HISTI' man bash
(sind das nicht die "Manualpages"?). @ NathanBasaneseEs 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:
Der
pwd
Befehl wird nicht im Verlauf gespeichert, da Whitespace im Vordergrund steht.quelle
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.
quelle
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16)