Speichern Sie regelmäßig die Bash-Geschichte

9

Ich habe Bash eingerichtet, um den Verlauf in einer Datei zu speichern. Dies geschieht immer dann, wenn bash [richtig] beendet wird. Da bash manchmal nicht richtig beendet wird, geht der Verlauf verloren.

Die Frage ist also, ob ich Bash einrichten kann, um die Geschichte regelmäßiger zu speichern.


Ich verwende Debian Gnu (Version 6, Squeeze) mit einem Linux-Kernel.

Bash-Version: GNU Bash, Version 4.1.5 (1) -Veröffentlichung (i486-pc-linux-gnu)

Strg-Alt-Delor
quelle

Antworten:

8

Speichern Sie dies in Ihrem bash_profile oder bashrc

shopt -s histappend

PROMPT_COMMAND="history -a;$PROMPT_COMMAND"

d4v3y0rk
quelle
Ist das noch eine gültige Antwort? In meinem System gibt es einen Eintrag shopt -s histappendunter /etc/bash/bashrc. Trotzdem verliert jeder unreine Ausgang laufender Shells seinen Befehlszeilenverlauf.
Nikos Alexandris
-1

Möglicherweise gehört Ihre $ HISTFILE root. Angenommen, Sie verwenden Bash als Login-Shell. So überprüfen Sie:

$ [ -z $HISTFILE ] && echo need to set HISTFILE || ls -l $HISTFILE
-rw------- 1 root root 36639 May 21 19:48 /home/joeb/.bash_history

Der Standardwert für HISTFILE sollte ~ / .bash_history sein. Wenn der Fehler "HISTFILE muss gesetzt werden" angezeigt wird oder wenn $ HISTFILE nicht ~ / .bash_history ist, sollten Sie ~ / .profile oder ~ / .bash_profile oder ~ / überprüfen. bashrc, um sicherzustellen, dass es nicht falsch eingestellt oder zurückgesetzt wird.

Normalerweise gehört es nur root, also setzen Sie es einfach zurück:

$ chown joeb.joeb $HISTFILE
$ ll $HISTFILE
-rw------- 1 joeb joeb 36639 May 21 19:48 /home/joeb/.bash_history

Abmelden und dann anmelden.

$ history

Sollte den letzten Befehlssatz anzeigen, der eingegeben wurde, bevor die Datei Eigentum von root war, gefolgt von den Befehlen, die eingegeben wurden, nachdem der Dateieigentum geändert wurde.

fokussierter Erfolg
quelle
3
Da OP angibt, dass der Verlauf gespeichert wird, wenn bash normal beendet wird, hat sein Problem nichts mit den Berechtigungen zu tun. Vielleicht könnte Ihre Antwort immer noch für jemanden nützlich sein, der Probleme mit der Bash-Geschichte hat.
Dmitry Grigoryev