An dieser Stelle möchte ich auf ein Problem hinweisen
export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\n'}history -a; history -c; history -r"
und
PROMPT_COMMAND="$PROMPT_COMMAND;history -a; history -n"
Wenn Sie source ~ / .bashrc ausführen, lautet das $ PROMPT_COMMAND wie folgt
"history -a; history -c; history -r history -a; history -c; history -r"
und
"history -a; history -n history -a; history -n"
Diese Wiederholung erfolgt jedes Mal, wenn Sie 'source ~ / .bashrc' ausführen. Sie können PROMPT_COMMAND nach jedem Ausführen von 'source ~ / .bashrc' überprüfen, indem Sie 'echo $ PROMPT_COMMAND' ausführen.
Sie konnten sehen, dass einige Befehle anscheinend nicht funktionierten: "history -n history -a". Aber die gute Nachricht ist, dass es immer noch funktioniert, da andere Teile immer noch eine gültige Befehlssequenz bilden (nur mit einigen zusätzlichen Kosten, da einige Befehle wiederholt ausgeführt werden. Und nicht so sauber.)
Persönlich benutze ich folgende einfache Version:
shopt -s histappend
PROMPT_COMMAND="history -a; history -c; history -r"
das hat die meisten der Funktionalitäten, während kein solches Problem wie oben erwähnt.
Ein weiterer Punkt ist: Es gibt wirklich nichts Magisches . PROMPT_COMMAND ist nur eine einfache Bash-Umgebungsvariable. Die darin enthaltenen Befehle werden ausgeführt, bevor Sie die Bash-Eingabeaufforderung (das $ -Zeichen) erhalten. Beispielsweise lautet Ihr PROMPT_COMMAND "echo 123" und Sie führen "ls" in Ihrem Terminal aus. Der Effekt ist wie das Ausführen von "ls; echo 123".
$ PROMPT_COMMAND="echo 123"
Ausgabe (So wie 'PROMPT_COMMAND = "echo 123"; $ PROMPT_COMMAND' ausgeführt wird):
123
Führen Sie Folgendes aus:
$ echo 3
Ausgabe:
3
123
"history -a" wird verwendet, um die history-Befehle in den Speicher von ~ / .bash_history zu schreiben
Mit "history -c" werden die Verlaufsbefehle im Speicher gelöscht
"history -r" wird verwendet, um Verlaufsbefehle von ~ / .bash_history in den Speicher zu lesen
Eine Erklärung zu den history-Befehlen finden Sie hier: http://ss64.com/bash/history.html
PS: Wie andere Benutzer bereits betont haben, ist der Export nicht erforderlich. Siehe: Verwenden des Exports in .bashrc