답변:
bash는 프롬프트가 이전보다 길다고 생각하기 때문입니다. \e[0;31m
예를 들어 이스케이프 시퀀스 는 터미널에 의해 빨려 들어가 다음 텍스트를 빨간색으로 바꾸지 만 bash는 그것을 알지 못합니다. 따라서 bash에게 해당 문자 시퀀스를 프롬프트 길이로 계산해서는 안된다는 것을 bash에 알려 주어야합니다 \[ \]
. 또한 터미널 이스케이프 시퀀스를 하드 코딩하는 대신 tput을 사용하는 것이 좋습니다.
red=$(tput setaf 1)
reset=$(tput sgr0)
PS1='\[$red\][\W]\$\[$reset\] '
자세한 내용은 BashFAQ 53 및 터미널 코드 (ANSI / VT100) 소개 를 참조하십시오.
\001 \002
있습니다.