Wskażę tutaj jeden problem
export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\n'}history -a; history -c; history -r"
i
PROMPT_COMMAND="$PROMPT_COMMAND;history -a; history -n"
Jeśli uruchomisz source ~ / .bashrc, $ PROMPT_COMMAND będzie podobny
"history -a; history -c; history -r history -a; history -c; history -r"
i
"history -a; history -n history -a; history -n"
Powtórzenie to występuje przy każdym uruchomieniu „source ~ / .bashrc”. Możesz sprawdzić PROMPT_COMMAND po każdym uruchomieniu „source ~ / .bashrc”, uruchamiając „echo $ PROMPT_COMMAND”.
Widać, że niektóre polecenia są najwyraźniej zepsute: „history -n history -a”. Ale dobrą wiadomością jest to, że nadal działa, ponieważ inne części nadal tworzą prawidłową sekwencję poleceń (po prostu wiąże się to z dodatkowymi kosztami z powodu powtarzalnego wykonywania niektórych poleceń. I nie jest tak czyste).
Osobiście korzystam z następującej prostej wersji:
shopt -s histappend
PROMPT_COMMAND="history -a; history -c; history -r"
który ma większość funkcji, a nie ma takiego problemu jak wspomniano powyżej.
Kolejną kwestią do zrobienia jest: naprawdę nie ma magii . PROMPT_COMMAND to zwykła zmienna środowiskowa bash. Polecenia w nim wykonywane są wykonywane przed wyświetleniem monitu bash (znak $). Na przykład twój PROMPT_COMMAND to „echo 123”, a ty uruchamiasz „ls” w swoim terminalu. Efekt jest podobny do uruchomienia „ls; echo 123”.
$ PROMPT_COMMAND="echo 123"
wyjście (Podobnie jak uruchomienie „PROMPT_COMMAND =„ echo 123 ”; $ PROMPT_COMMAND”):
123
Uruchom następujące czynności:
$ echo 3
wynik:
3
123
„history -a” służy do zapisywania poleceń historii w pamięci do ~ / .bash_history
„history -c” służy do usuwania poleceń historii z pamięci
„history -r” służy do odczytu poleceń historii z ~ / .bash_history do pamięci
Zobacz wyjaśnienie polecenia historii tutaj: http://ss64.com/bash/history.html
PS: Jak zauważyli inni użytkownicy, eksport nie jest konieczny. Zobacz: za pomocą eksportu w .bashrc