Aus irgendeinem Grund kann ich mein System nach einem Neustart nicht dazu bringen, meinen BASH-Verlauf zu speichern. Hier sind die relevanten Abschnitte meiner ~/.bashrc
:
shopt -s histappend
PROMPT_COMMAND='history -a; updateWindowTitle'
export HISTCONTROL=ignoredups
export HISTSIZE=9999
export HISTFILESIZE=999999
export HISTFILE="$HOME/.bash_history"
Soweit ich das beurteilen kann, gibt es alle erforderlichen Optionen (ich weiß, dass ich früher in der Lage war, den Verlauf über mehrere Neustarts hinweg zu verfolgen, ohne dass dies alles in der Vergangenheit passiert ist). Obwohl ich diese Optionen vor einigen Neustarts hinzugefügt habe, verliere ich nach einem Neustart immer noch den größten Teil meines Verlaufs. Es ist nicht leer, hat aber nicht die 9999 Leitungen, die ich vor dem Neustart hatte.
Bevor sich jemand beschwert, habe ich ja diese Fragen gelesen. Ich habe einige ihrer Vorschläge wie oben aufgeführt umgesetzt, der Rest war entweder nicht hilfreich oder nicht relevant:
- Bash-Verlaufsverlust bei Verwendung von Histappend
- Wie kann man verhindern, dass Bash die Geschichte verändert?
- Was bestimmt, was im Befehl bash history angezeigt wird?
- Wie kann ich meinen Bash-Verlauf über mehrere Sitzungen hinweg aufbewahren?
- Speichern Sie regelmäßig die Bash-Historie
Für den Fall, dass es möglicherweise andere relevante Befehle gibt, können Sie meinen gesamten Inhalt ~/.bashrc
hier anzeigen .
Also, was fehle ich? Warum wird mein Verlauf nicht gespeichert? Wenn jemand der Meinung ist, dass eine andere Datei relevant sein könnte, lass es mich wissen und ich werde es veröffentlichen. Ich überprüfte, indem ich grep -i hist \.*
mein $HOME
ausführte, das zeigte, dass die einzige relevante .
Akte, die die Zeichenkette enthielt hist
oder HIST
war .bashrc
.
Ich verwende Linux Mint Debian Edition, GNU Bash, Version 4.2.36 (1) -Release (x86_64-pc-linux-gnu) und meinen bevorzugten Terminal-Emulator (falls relevant) terminator
.
AKTUALISIEREN:
Dem Vorschlag von @ mpy in den Kommentaren folgend, habe ich meine ~/.bashrc
Einstellung geändert und nicht HISTFILE=~/bash_history
die Standardeinstellung. Dies ~/.bash_history
scheint das Problem für interaktive Shells zu lösen . Anmelde-Shells zeigen immer noch dasselbe Verhalten, wobei der Verlauf in 500
Zeilen abgeschnitten ist. In HIST
den relevanten Dateien sind jedoch keine zugehörigen Variablen festgelegt:
$ for f in /etc/profile ~/.profile ~/.bash_profile ~/.bash_login; do \
echo -ne "$f :"; echo `grep HIST $f`; \
done
/etc/profile :
/home/terdon/.profile :grep: /home/terdon/.profile: No such file or directory
/home/terdon/.bash_profile :grep: /home/terdon/.bash_profile: No such file or directory
/home/terdon/.bash_login :grep: /home/terdon/.bash_login: No such file or directory
$ grep -r HIST /etc/profile.d/ <-- returns nothing
Also, warum setzt HISTSIZE
und HISTFILESIZE
in dem ~/.bashrc
nicht genug , wenn ich explizit die $HISTFILE
auf etwas anderes als der Standard ~/.bash_history
?
history
Befehl ausführen , ist die angezeigte Ausgabe identisch mit der angezeigten Ausgabe, abgesehen von cat .bash_history
den Zeilennummern. Ich meine, listet der history
Befehl Zeitstempel oder andere Informationen auf? Der Grund, den ich frage, ist, wenn Sie diese esoterischen Dinge sehen, bedeutet dies, dass es ein anderes Modul / eine andere Funktion / ein anderes Programm gibt, das mit der Shell-Historie in Konflikt gerät, und dass eine falsche oder fehlerhafte Version dessen, was auch immer es ist, Sie möglicherweise betrübt .
;)
: Probieren Sie eine andere Datei als HISTFILE aus, nicht die Standarddatei ~/.bash_history
. Sehr konstruierte Erklärung: Ich gehe davon aus, dass bash Ihre Standard-Shell ist. Beim Systemstart ist also eine nicht interaktive Shell das übergeordnete Element Ihrer X-Sitzung (ich gehe auch davon aus, dass Sie X verwenden), die nichts über die Option histappend weiß (da .bashrc nur ist) gelesen von interaktiven Shells), so lange diese übergeordnete Shell ausgeführt wird, ist alles in Ordnung, aber beim Beenden (dh Systemstopp) wird es überschrieben ~/.bash_history
(was Standard ist) und Ihre Geschichte