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

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

BASH 쉘에서 아래 명령을 실행했습니다.

export PROMPT_COMMAND='echo "$BASH_COMMAND" >> $HOME/my_bash_history'

하지만 쉘에 뭔가를 입력하고 리턴 키를 누를 때마다 다음으로 채워지는 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'

관련 정보