Ich benutze mehrere Konsole-Terminals. Und ich möchte, dass alle Befehle, die ich in jedes Terminal eingebe, im Befehlsverlauf gespeichert werden, damit die nächste Konsole, die ich öffne, alle enthält. Um zu verhindern, dass jedes Terminal den Befehlsverlauf des anderen Terminals überschreibt, habe ich die folgenden Einstellungen vorgenommen.bashrc
# avoid duplicates and commands starting with space
export HISTCONTROL=ignoredups:erasedups:ignorespace
# append history entries..
shopt -s histappend
#My machine reboots without warning sometimes.Hence to save commands instantaneously.
export PROMPT_COMMAND="history -a"
export HISTSIZE=1000
PS1="\[\e[1;34m\]\! \[\e[0m\]"$PS1
Ich habe die letzte Zeile angegeben, um die Befehlsnummer in meiner Eingabeaufforderung anzuzeigen. Der Befehl Nr. ist nie über 600 gegangen, aber immer noch verschwinden einige meiner alten Befehle aus der Geschichte. Es gibt viele Befehle, die wiederholt gegeben werden, aber wie erwartet ignoredups
wird der Befehl no in prompt nie erhöht. Dennoch verschwinden alte Befehle immer noch. Und die Anzahl der Befehle in der Geschichte bleibt immer etwas mehr als 500.
Die .bash_history
Datei enthält trotz ignorierter Ups immer noch viele Duplikate.
PS: Die Ausgabe von Echo $HISTSIZE
und $HISTFILESIZE
sind beide=1000
Update: Ich habe das Problem im obigen Eintrag zu gefunden .bashrc
. Aufruf nur history -a
in PROMPT_COMMAND
einfach den letzten neuen Befehl an der .bash_history anhängt. Also die ignoredups
und erasedups
haben keine Wirkung.
Kann ich trotzdem ohne Duplikate von jedem Terminal in die .bash_history schreiben? Ich möchte nicht den gesamten Verlauf an jeder Eingabeaufforderung von laden history -r
und mit erneut schreiben history -w
, da die Befehle, die ich in einem Terminal ausgegeben habe, auch in einem anderen parallel laufenden Terminal angezeigt werden . Ich möchte, dass die kombinierten Befehle nur in einem neuen Terminal angezeigt werden.
Das Rätsel, warum meine Geschichte auf 500 gekürzt wurde, ist gelöst. Ich bemerkte, dass es jedes Mal passierte, wenn ich in diese Maschine ssh. Das Erstellen eines .bash_profile
mit dem folgenden Eintrag löste dieses Problem.
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
Jetzt wird meine .bashrc jedes Mal ausgeführt, wenn ich auch ssh. Und die Größe der Verlaufsdatei nimmt jetzt monoton zu.
bug-bash
ein Jahr nach dem Posten