Тут я зазначу одну проблему
export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\n'}history -a; history -c; history -r"
і
PROMPT_COMMAND="$PROMPT_COMMAND;history -a; history -n"
Якщо ви запустите source ~ / .bashrc, $ PROMPT_COMMAND буде подібний
"history -a; history -c; history -r history -a; history -c; history -r"
і
"history -a; history -n history -a; history -n"
Це повторення відбувається кожного разу, коли ви запускаєте 'source ~ / .bashrc'. Ви можете перевірити PROMPT_COMMAND після кожного запуску "source ~ / .bashrc", запустивши "echo $ PROMPT_COMMAND".
Ви могли бачити, що деякі команди, мабуть, порушені: "історія -n історія -a". Але гарна новина полягає в тому, що вона все-таки працює, тому що інші частини все ще утворюють дійсну послідовність команд (Просто пов'язані з деякими додатковими витратами за рахунок повторного виконання деяких команд. І не дуже чисто).
Особисто я використовую таку просту версію:
shopt -s histappend
PROMPT_COMMAND="history -a; history -c; history -r"
який має більшість функціональних можливостей, але немає такого питання, як згадувалося вище.
Ще один момент, який слід зазначити: насправді немає нічого магічного . PROMPT_COMMAND - це просто звичайна змінна середовище bash. Команди в ньому виконуються перед тим, як отримати команду bash (знак $). Наприклад, ваш PROMPT_COMMAND - "echo 123", і ви запускаєте "ls" у своєму терміналі. Ефект на зразок запуску "ls; echo 123".
$ PROMPT_COMMAND="echo 123"
вихід (подібно до запуску 'PROMPT_COMMAND = "ехо 123"; $ PROMPT_COMMAND'):
123
Виконайте наступне:
$ echo 3
вихід:
3
123
"history -a" використовується для запису команд історії в пам'ять до ~ / .bash_history
"history -c" використовується для очищення команд історії в пам'яті
"історія -r" використовується для читання команд історії з ~ / .bash_history до пам'яті
Пояснення команд історії див. Тут: http://ss64.com/bash/history.html
PS: Як зазначали інші користувачі, експорт зайвий. Див.: Використання експорту в .bashrc