Da es oft vorkommt, dass der Verlauf nicht gespeichert wird, wenn das Gnome-Terminal heruntergefahren und nicht geschlossen wird, möchte ich vor der Anzeige der Eingabeaufforderung, wenn die Zeile kein Duplikat ist, den Bash-Verlauf anhängen. Obwohl ich export HISTCONTROL=ignoreboth
in bashrc ein Häkchen gesetzt habe, das ignoreups implizieren soll, scheint es nicht zu funktionieren, da ich immer noch Duplikate in bash_history bekomme. Wie geht das also?
Um weitere Hinweise zu geben, obwohl keine Lösungen: Ich denke, $PROMPT_COMMAND muss"$(history 1)" (if_not_duplicate) >> ~/.bash_history
Und dies würde nicht benachbarte Duplikate entfernen, wenn sie bereits eingefügt sind.
perl -nei '$H{$_}++ or print' ~/.bash_history
Antwort1
Sie müssen sowohl PROMPT_COMMAND als auch HISTCONTROL ändern, um dies richtig zu machen. Folgendes sollte für Sie funktionieren:
# The secret sauce is "erasedups," which replaces the default of "ignoredups."
export HISTCONTROL=erasedups:ignorespace
# Write the history to HISTFILE before showing the prompt.
export PROMPT_COMMAND='history -w'
Bei diesem Ansatz sind zwei Einschränkungen zu beachten:
- Sie verlieren den Verlauf (insbesondere doppelte Einträge), was von Bedeutung sein kann, wenn Sie sich bei irgendetwas auf HISTTIMEFORMAT-Werte verlassen.
- Sie kürzen Ihre HISTFILE kontinuierlich auf HISTFILESIZE.
Dabei handelt es sich nicht unbedingt um Probleme, sondern nur um kleinere Probleme, die Sie kennen sollten.