.bashrc를 편집하여 프롬프트를 변경해 보았습니다.
export PS1="\e[0;32m[\u@\h \W]\$ \e[m"
이것이 작동하는 것 같지만 역방향 기록에 액세스하기 위해 ctrl-r을 사용하면 결국 내 입력이 해석될 동일한 위치에 나타나지 않게 됩니다(예:이 문제). 그러나 위쪽 또는 아래쪽 화살표를 사용하여 이전 명령을 선택하는 것은 괜찮습니다.
이 질문을 살펴봤지만 프롬프트에서 이스케이프 문자를 어디에 적용해야 할지 알 수 없는 것 같습니다. 여러 가지 조합을 시도했지만 일반 텍스트 입력 기능이나 간단한 뒤로/앞으로 기록이 깨졌습니다.
어떤 문자 인스턴스를 이스케이프해야 하는지, 그 이유를 설명할 수 있다면 나(그리고 다른 사람들도)가 배우는 데 도움이 될 것입니다.
답변1
쉘은 프롬프트가 화면에서 얼마나 많은 공간을 차지하는지 알아야 합니다. 화면 공간을 차지하지 않는 문자 시퀀스는 \[
and 로 이스케이프 해야 합니다 \]
. 여기에는 색상 설정, 터미널 창에 제목 지정, 커서 이동에 사용되는 이스케이프 시퀀스가 포함됩니다.
귀하의 경우에는 다음과 같습니다.
export PS1="\[\e[0;32m\][\u@\h \W]\$ \[\e[m\]"
쉘이 [\u@\h \W]$
실제로 화면 공간만 차지하도록 지시합니다.