Das ist verwirrend und wenn man Pech hat, werden genau die Befehle überschrieben, die man unbedingt wieder benötigt hätte. Folgendermaßen bekommt man ein ewiges Logfile für die Bash:
CODE:
~$ grep -i hist .bashrc
HISTTIMEFORMAT='%F %T '
PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND ; }" 'echo $USER $(history 1) >> ~/.history'
Mit HISTTIMEFORMAT wird angegeben, wie das Datum für jeden Eintrag gespeichert werden soll. Danach gibt man an, dass jedesmal wenn der Prompt angezeigt wird, der vorige Befehl gespeichert werden soll (in diesem Fall: "Hänge den vorherigen Befehl an ~/.history an": echo $(history 1) >> ~/.history). $PROMPT_COMMAND gibt an, was ausgeführt werden soll, bevor der PROMPT angezeigt wird. Und ${PROMPT_COMMAND:+$PROMT_COMMAND} definiert, dass der nachfolgende Befehl an die eventuell bereits definierte Variable PROMPT_COMMAND angehängt werden soll.
Die History wird dann im Format
USER INDEX TIMESTAMP COMMMAND
gespeichert. Man kann natürlich noch zusätzliche Infos hinzufügen.
[UPDATE]
Der Vollständigkeit halber möchte ich noch ergänzen, wie man das auch lösen könnte:
CODE:
~$ unset $HISTSIZE
~$ unset $HISTFILESIZE
~$ shopt -s histappend
~$ PROMPT_COMMAND='history -a'
Damit sollte auch ein ewiges Logfile geschrieben werden. HISTSIZE gibt die Anzahl der Einträge an, die die aktuelle bash-Session speichert, HISTFILESIZE die Anzahl der Einträge in der .bash_history. Mittels shopt -s histappend wird der bash mitgeteilt, dass die .bash_history nicht jedesmal überschrieben werden soll, sondern neue Einträge immer angehängt werden soll. Und mit PROMPT_COMMAND='history -a' wird eingestellt, dass jedesmal wenn ein Prompt angezeigt wird, der letzte Befehl in die Logdatei angehängt wird.
Das einzige Problem hierbei könnte sein, dass nach einer Zeit die history zu groß wird und damit die bash zuviel Speicher benötigt und unnötig lahm wird.
