여기서 나는 하나의 문제를 지적 할 것이다.
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'를 실행할 때마다 발생합니다. 'echo $ PROMPT_COMMAND'를 실행하여 'source ~ / .bashrc'를 실행할 때마다 PROMPT_COMMAND를 확인할 수 있습니다.
"history -n history -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 = "echo 123"; $ PROMPT_COMMAND'실행과 동일) :
123
다음을 실행하십시오.
$ echo 3
산출:
3
123
"history -a"는 메모리의 히스토리 명령을 ~ / .bash_history에 쓰는 데 사용됩니다.
"history -c"는 메모리에서 히스토리 명령을 지우는 데 사용됩니다.
"history -r"은 ~ / .bash_history에서 메모리로 기록 명령을 읽는 데 사용됩니다.
http://ss64.com/bash/history.html : 역사 명령 설명을 참조하십시오
추신 : 다른 사용자들이 지적했듯이, 수출 은 불필요합니다. 참조 : .bashrc에서 내보내기 사용