BASH 쉘에서 다음 명령을 실행했습니다.
export PROMPT_COMMAND='echo "$BASH_COMMAND" >> $HOME/my_bash_history'
그러나 쉘에 무언가를 입력하고 Enter 키를 누를 때마다 my_bash_history 파일에 다음을 포함하는 한 줄이 더 표시됩니다.
echo "$BASH_COMMAND" >> $HOME/my_bash_history
echo "$BASH_COMMAND" >> $HOME/my_bash_history
echo "$BASH_COMMAND" >> $HOME/my_bash_history
echo "$BASH_COMMAND" >> $HOME/my_bash_history
echo "$BASH_COMMAND" >> $HOME/my_bash_history
echo "$BASH_COMMAND" >> $HOME/my_bash_history
왜 이런 일이 일어나는지 아는 사람이 있나요?
답변1
Rui가 지적했듯이 "내부의 어떤 것도 '평가되지 않습니다." 또는 BASH 매뉴얼에 명시된 대로
문자를 작은따옴표로 묶으면 따옴표 안의 각 문자의 리터럴 값이 유지됩니다.
이에 대한 답을 수반하는 해결방안으로 이력을 기록하는 방법 중 하나는 다음과 같다 PROMPT_COMMAND
.
export PROMPT_COMMAND='echo $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//") >> $HOME/my_bash_history'