Ich möchte, dass meine .bash_history
Datei unbegrenzt ist. zB So kann ich immer zurückgehen und sehen, wie ich etwas erstellt / konfiguriert habe, was dieser raffinierte Befehl war oder wie ein Befehl vor Wochen etwas kaputt gemacht hat. Wie ändere ich diese Einstellung?
350
Antworten:
Setzen Sie
HISTSIZE
undHISTFILESIZE
in .bashrc auf eine leere Zeichenfolge:In Bash 4.3 und höher können Sie auch Folgendes verwenden
HISTSIZE=-1 HISTFILESIZE=-1
:quelle
HISTSIZE= HISTFILESIZE=
führt dazu, dass der Bash-Verlauf zumindest für mich vollständig deaktiviert wird.HISTSIZE=-1 HISTFILESIZE=-1
meinen Verlauf deaktiviert, währendHISTSIZE= HISTFILESIZE=
der Trick ausgeführt wurde. CentOS 7 hier.HISTSIZE= HISTFILESIZE=
Sie solltenexport HISTSIZE=
export HISTFILESIZE=
Nach vielen großen, hässlichen Iterationen und seltsamen Randfällen im Laufe der Jahre habe ich jetzt einen kurzen Abschnitt meiner .bashrc , der sich diesem Thema widmet.
Zuerst müssen Sie diesen Abschnitt Ihrer .bashrc auskommentieren oder entfernen (Standard für Ubuntu). Wenn Sie dies nicht tun,
screen
wird Ihr Verlauf in bestimmten Umgebungen (z. B. beim Ausführen von Sitzungen) weiterhin abgeschnitten:Zweitens fügen Sie dies am Ende Ihrer .bashrc hinzu:
Hinweis: Jeder Befehl wird unmittelbar nach seiner Ausführung geschrieben. Wenn Sie also versehentlich ein Kennwort einfügen, können Sie nicht einfach "-9 %%" töten, um das Schreiben des Verlaufs zu vermeiden. Sie müssen es manuell entfernen.
Beachten Sie auch, dass bei jeder Bash-Sitzung die gesamte Verlaufsdatei in den Speicher geladen wird. Selbst wenn Ihre Verlaufsdatei auf 10 MB anwächst (was sehr lange dauert ), werden Sie keine großen Auswirkungen auf die Startzeit Ihrer Bash bemerken.
quelle
HISTFILESIZE=
undHISTSIZE=
leer anstelle von -1 und stellen Sie sicher, dass Sie keine anderen Deklarationen dieser Parameter in einem .bashrc- oder .bash_profile oder .profile haben..bashrc
, dass ich dieses Setup nach einer anderen Datei hatte, die von .bashrc geladen wurde ... und jetzt funktioniert! Danke!cat ~/.bash_history >>~/.bash_eternal_history
HISTFILESIZE
(und möglicherweiseHISTSIZE
) sofort wirksam wird, kann nicht überbetont werden .Wie Jörg Beyer oben erwähnt hat
HISTSIZE
und derHISTFILESIZE
Schlüssel ist.Darüber hinaus sollten Sie auf jeden Fall die Umgebungsvariable überprüfen, mit der
HISTCONTROL
Sie coole Dinge tun können, z. B. keine doppelten Verlaufsbefehle speichern (HISTCONTROL=erasedups
). Es macht keinen Sinn, eine unbegrenzte Historie zu haben, wenn Sie Hunderte von Zeilencd ..
oder ähnliches durchsuchen müssen .Links: hier und mit der Bash-Geschichte arbeiten . Die häufig gestellten Fragen zu Bash-Variablen sind ebenfalls einen Besuch wert .
quelle
Ctrl-r
SomecharsCtrl-o
Ctrl-o
Ctrl-o
Ctrl-o
. Deshalb behalte ich Duplikate in der Geschichte.Ctrl-o
?Ctrl-o
führt den Befehl an der Eingabeaufforderung aus und zeigt den Befehl sofort nach dem vorherigen in der Geschichte an. Ein Vorteil besteht darin, dass nachCtrl-r
dem Auffinden eines alten Befehls (möglicherweise mit dem Aufwärts- und Abwärtspfeil, um zu benachbarten Befehlen im Verlauf zu wechseln) ausreichendCtrl
gedrückt undo
mehrmals gedrückt werden muss , um eine vorherige Befehlsreihe erneut auszuführen, selbst in einer Endlosschleife falls Sie es wollen. Siehe auch GNU Readline - WikipediaHier gibt es (mindestens) zwei relevante Umgebungen:
Ich denke, wir können uns darauf einigen, dass der Begriff unbegrenzt oft der gleiche wie sehr groß ist (oder haben Sie unbegrenzten Dateispeicher?). Stellen Sie also einfach die Werte sehr groß ein.
quelle