기록을 탐색할 때 Bash 프롬프트가 깨져 표시됩니까?

기록을 탐색할 때 Bash 프롬프트가 깨져 표시됩니까?

.bash_profileMacOS와 콘텐츠가 있습니다 .

export PS1="\[\e[0;31m$\]\[\e[m\] \[\e[0;32m\w\e[m\] : \]"

결과적으로 터미널에 다음과 같이 비밀번호를 인쇄했습니다.

스크린샷

그러나 터미널 기록을 사용하기 위해 위쪽 및 아래쪽 화살표를 누르면 오류가 발생합니다.

여기에 이미지 설명을 입력하세요.

답변1

  1. PS1을 내보낼 필요가 없습니다. PS1은 셸의 변수이며 다른 프로세스에서 사용되지 않습니다.
  2. 이스케이프 대괄호가 올바르지 않은 것 같습니다. 그들은 거기에 둘러싸여 있었다인쇄되지 않음그래야 bash가 프롬프트의 너비를 정확하게 계산할 수 있습니다. 이 시도:

    PS1="\[\e[0;31m\]\$ \[\e[0;32m\]\w\[\e[0m\] : "
    #     1.........1    2.........2   3......3 
    

    따라서 인쇄 비트( \$, \w, 콜론 및 공백)는외부괄호.

추가 참조:https://www.gnu.org/software/bash/manual/bashref.html#Controlling-the-Prompt

관련 정보