2009-04-01 5 views
10

내가 다소 장황한 배쉬 프롬프트 사용하는 것이 인정 : 최근왜이 bash 프롬프트가 이상하게 작동하고 사라지고 어떻게 해결합니까 (OS X)?

--(username)-(Wed April 01|12:00:00)--(~ $

을, 나는 그것을 변경하는 밝은 생각이있어 그래서, 이전 명령의 종료 값에 성공하는 경우, 내부 요소를 따라 가 녹색이고, 실패하면 빨간색이됩니다. 나는 대부분 (일부 이상한 종료 상태가 색을 다른 것으로 바꿀 것이다. 그러나 나는 그걸로 괜찮다.)하지만, 한 줄 이상의 명령을 타이핑 할 때 터미널이 스크롤하게되면, 프롬프트가 사라집니다! 색상이 없으면 프롬프트가 제대로 작동 했으므로 색이 빠져 나가는 것과 관련이있는 것으로 추측합니다. 특히 내 닫지 않은 것이지만 그것을 고정 할 수는 없습니다.

#.profile 
export PS1='--(\e[$((32-${?}))m\u\e[0m)-(\e[$((32-${?}))m\d\e[0m|\e[$((32-${?}))m\T\e[0m)--(\e[$((32-${?}))m\w\e[0m \$ '

미리 감사드립니다.

답변

34

this와 같이 입력하면 문제를 해결할 수 있습니다.

이 나를 위해 *을 작동하는 것 같다

:

링크 된 게시물을 인용하자면 나를 위해 정말 export PS1='\[email protected]\h:\w\$ ' 작품 잘

export PS1='--(\[\e[$((32-${?}))m\]\u\[\e[0m\])-(\[\e[$((32-${?}))m\]\d\[\e[0m\]|\[\e[$((32-${?}))m\]\T\[\e[0m\])--(\[\e[$((32-${?}))m\]\w\[\e[0m\] \$ ' 

*, 대답은 주위 \ [와 \] 추가에있다 PS1 선언의 모든 색상 순서 :

나는 다음과 같은 가치를 지니기 전에 PS1 :

'\ 전자 [0; 34m의 \의 H : \ w [] \ $ \ 전자 [0m!'나에게 다음과 같은 형식

호스트의 멋진 푸른 프롬프트 준

: 작업을 -directory [command-number] $

그러나 줄 바꾸기 문제가있었습니다. 수정 사항은 ANSI 이스케이프 주위에 \ [and \]를 삽입하여 셸이 줄 바꿈 계산에 포함하지 않는 것을 알고 있도록하는 것입니다.

+2

Chas, 그냥 그 프롬프트를보고 내 눈을 붉게 만듭니다. 도와 줘서 고마워! 당신의 것이 완전히 작동하는 유일한 해결책이었습니다. –

+0

내 프롬프트의 색상을 변경 한 후 (OSX가 아닌 Linux에서) 내 기록에서 거꾸로 검색하는 데 문제가있었습니다. 이것은 내 문제를 해결했다. 감사! – Mark

6

http://mywiki.wooledge.org/BashFAQ/053 : ''! \ w [] \ $ \ [\ E [m \] 34m \] \ H \ [\ E [0

:이 PS1에 대한 다음 값을 초래 - 색상으로 멋진 프롬프트가 있습니다. 이제는 bash가 터미널이 얼마나 넓은 지 알 수없는 것 같습니다. 줄 바꿈이 잘못되었습니다.

그건 그렇고; 참조 용; 여기처럼 보이는 내 PS1이다 : 나는 $parameters의 모든 색상 코드를 넣어하는 방법 alt text http://lhunath.lyndir.com/stuff/PS1.png

\[$reset$bold$green\]\[email protected]\h\[$blue\] \W \[$red\]${?/#0/\[$green\]}\$\[$reset\] 

주의 깔끔한 모양을 만들기 위해,하지만 더 중요한 것은, 때문에 당신이 그들을를 생성하는 tput를 사용한다. 참조 :

http://mywiki.wooledge.org/BashFAQ/037 - 다양한 색상으로 텍스트를 인쇄하려면 어떻게해야합니까?

내 색상 매개 변수는 bashlib이라고하는 my ~/.bashrc (및 내가 쓰는 모든 스크립트)을 소스로하는 유틸리티 스크립트에서 선언합니다.

마지막주의 사항; PS1 정의를 ~/.bashrc에 입력하고 export은 지정하지 마십시오. 쉘에서 생성하는 모든 프로세스의 환경에 PS1 정의를 추가해야하는 이유는 없습니다.

당신은 단지 (첫 번째 '\ 전자'전에 마지막으로 'M'이후) 당신의 탈출 주변의 시작과 끝 괄호를 누락 될 것으로 보인다
1

:

PS1='--(\[\e[$((32-${?}))m\u\e[0m)-(\e[$((32-${?}))m\d\e[0m|\e[$((32-${?}))m\T\e[0m)--(\e[$((32-${?}))m\w\e[0m\] \$ ' 

언급 한 바와 같이, PS1의 VAR하지 않습니다 내보낼 필요가 있습니다 : 오직 쉘만이 그것을 볼 필요가 있습니다.