Ich habe gestern in meinem CentOS 7 viele Befehle ausgegeben. Aber als ich diese Befehle heute abrufen wollte, stellte ich fest, dass es keine Aufzeichnungen gab. Als ich die Datei öffnete .bash_history
, konnte ich immer noch nicht die Befehle finden, die ich gestern ausgegeben habe, aber ich habe vor ein paar Tagen viele alte Befehle gefunden. Warum wurden die letzten Befehle nicht gespeichert? Wie kann ich die Verlaufsfunktion erhöhen?
bash
command-history
Jack
quelle
quelle
Antworten:
Die wahrscheinlichste Ursache dafür, dass Verlaufselemente nicht angezeigt werden, ist, dass sie nicht
HISTFILE
auf "nichts" oder "HISTSIZE
Null" gesetzt werden. Sie melden sich zweimal auf demselben Computer an und beenden die zweite Bash-Instanz (in der Sie wenig oder nichts getan haben) nach derjenigen, auf der sie sich befanden du hast viel getan Standardmäßig führt Bash keine Historien zusammen und der zweite Bash-Exit überschreibt das.bash_history
, was beim ersten Bash-Exit so schön aktualisiert wurde.Um dies zu verhindern, können Sie an die Verlaufsdatei anhängen, anstatt sie zu überschreiben. Verwenden Sie dazu die
histappend
Shell-Option:Weitere Details in dieser Antwort , einschließlich , wie man verwendet
HISTSIZE
,HISTFILESIZE
undHISTCONTROL
Größe zu steuern, Duplikate usw.quelle
Um die Geschichte Größe Verwendung zwei BASH Variablen zu ändern
HISTSIZE
,HISTFILESIZE
( in der Regel festgelegt in.bashrc
).Beschreibung aus der BASH-Manpage:
Als Beispiel habe ich das folgende Setup in meiner
.bashrc
Datei:quelle
Ich hatte dies geschehen, aber die Lösung wurde hier nicht aufgeführt. Die Ursache war nur ein einfaches Copy + Paste-Problem. Ich habe einen Befehl aus einem anderen Dokument kopiert und in der Zwischenablage wurde ein zusätzlicher weißer Bereich angezeigt. Aus irgendeinem Grund hat dies dazu geführt, dass Ubuntu den Befehl nicht in der Verlaufsdatei speichert.
Das obige Bild war der Befehl, den ich in meinem Zwischenablageformular Google Docs hatte. Dieser Befehl wurde ausgeführt, aber in meiner Historie weggelassen. Ich bin einfach zurückgegangen und habe den Befehl ohne Leerzeichen ausgewählt, und dann ist er im Bash-Verlauf aufgetaucht.
quelle
Stellen Sie sicher, dass Ihre
HISTCONTROL
Umgebungsvariable nicht aufignorespace
oder festgelegt istignoreboth
.Sie können es ändern, indem Sie den Wert in Ihrer
~/.bash_profile
oder Ihrer~/.profile
Datei festlegen:Aus der
bash
Manpage:quelle