PS1 프롬프트가 로컬 콘솔과 원격 콘솔에서 다르게 나타납니다.

PS1 프롬프트가 로컬 콘솔과 원격 콘솔에서 다르게 나타납니다.

내 PS1 팁은 다음과 같습니다.

export PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;35m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "

이는 다음을 나타냅니다.원격으로 완벽함(SSH) 콘솔(PTS):

luis@Chomsky:~$

표시할 수 없지만 전체 프롬프트가 보라색으로 표시됩니다.
문제는 다음과 같습니다.로컬(TTY), 약간의 추악함을 보여줍니다.

;luis@Chomsky: ~luis@Chomsky:~$

역시 표시할 수는 없지만 첫 번째 부분(";"부터 "~"까지)은 색상이 없고 나머지 부분은 보라색입니다.

Additional data:  
  • Bash 셸 사용:

luis@Chomsky:~$ ps -p$$ -ocmd= -bash

  • Ubuntu Desktop 및 Ubuntu Server v14.04 LTS에서 테스트되었습니다.
  • 휴대용 ASUS EEE PC 및 VirtualBox 가상 머신에서 (적어도) 테스트되었습니다.
  • 나는 export PS1=에 행을 추가하는 데 사용합니다 ~/.bashrc.

왜 이런 일이 발생하는지, 어떻게 해야 하는지 알고 싶습니다.이 문제를 해결하다.

감사해요.

답변1

제어 시퀀스는 \e]0;TITLE\a많은 터미널 에뮬레이터에서 인식되며 창 제목을 설정합니다. Linux 콘솔은 이 제어 시퀀스를 인식하지 못합니다(어쨌든 제목이 없습니다). 이를 보고 \e]0"이게 무슨 뜻인지 모르므로 무시하겠습니다"라고 결정하고 다음 텍스트를 인쇄합니다.

현재 터미널에 따라 프롬프트를 다르게 설정해야 합니다.

title_text='\u@\h: \w'
set_title=
case $TERM in
  dtterm|rxvt|[Ek]term|*xterm) set_title='\[\e]0;'"$title_text"'\a\]';;
  screen) set_title='\[\ek'"$title_text"'\e\\\]';;
esac
PS1="$set_title$PS1"

관련 정보