[apple] 사용자 지정 .bash_profile을 사용하여 터미널에서 이상한 동작

동작을 설명하기는 어렵지만 짧은 클립이 있습니다.

http://www.youtube.com/watch?v=9KqHBA94FPI

기본적으로 여러 줄 명령을 입력하면 첫 번째 줄의 끝에서 삽입 블록이 첫 번째 줄의 시작으로 돌아가고 첫 번째 줄을 쓴 다음 두 번째, 세 번째 등의 줄에서 정상적으로 계속됩니다. . 삭제할 때 전체 명령과 명령 위의 빈 공간을 삭제할 수 있습니다 (user @ host / Directory 정보가 포함 된 행 뒤에 명령이 삽입되도록 설정했습니다. 위에서 설명한 디렉토리와 호스트의 마지막 부분입니다. 설명이 끔찍해서 죄송합니다. 비디오가 더 잘 작동합니다.

내 .bash_profile의 내용은 다음과 같습니다.

export PS1="\e[31m\u\e[0m@\e[34m\h\e[33m\w\n \$ \e[0m "



답변

비 인쇄 문자 (이 경우 ANSI 이스케이프 시퀀스)를 bash 이스케이프 시퀀스 : \[및로 둘러싸 야합니다 \]. 그렇게하면 배쉬는 동봉 된 문자가 보이지 않는다는 것을 알 수 있습니다. 그들은 공간을 차지하지 않습니다. 그것들은 줄 바꿈에 의해 사용 된 단어 길이 계산에 포함되어서는 안됩니다.

다시 말해 PS1정의를 바꾸십시오 :

export PS1="\e[31m\u\e[0m@\e[34m\h\e[33m\w\n \$ \e[0m "

export PS1="\[\e[31m\]\u\[\e[0m\]@\[\e[34m\]\h\[\e[33m\]\w\n \$ \[\e[0m\] "

그리고 여기 PS1에는 사람이 읽을 수있는 가독성이 향상된 동일한 값이 있습니다 (하단 행의 ANSI 이스케이프, 중간 행의 bash 이스케이프 및 위쪽 행의 문자 인쇄).

          \u          @          \h          \w\n \$
\[      \]  \[     \] \[      \]  \[      \]        \[     \] 
  \e[31m      \e[0m     \e[34m      \e[33m            \e[0m    

더 읽을 거리 :


답변

나는 모두

비슷한 문제가 있었고 PS1 변수를 원래 변수에서 매우 간단한 변수로 변경하여 해결책을 찾았습니다. 내 이름은 실제로입니다 : export PS1 = Alex

이제 내 터미널에는 더 이상 이상한 동작이 없습니다.

도움이 되길 바랍니다.

Alex (Mac Lion 10.8)


답변