PROMPT_COMMAND를 사용하여 사용자 정의 bash 기록 파일을 에코하세요.

PROMPT_COMMAND를 사용하여 사용자 정의 bash 기록 파일을 에코하세요.

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'

관련 정보