존재하다.bashrc
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
이해 ${debian_chroot:+($debian_chroot)}\u@\h: \w
하지만 이해가 안 돼요 \[\e]0;
. 그것은 무엇을 합니까?
답변1
이것은 ASCII 27(ESC)로 대체된 \e]0;
이스케이프 시퀀스 \e
이므로 터미널은 xterm 에 BEL()로 끝나는 ESC ] 0 ;
아이콘과 제목 표시줄을 설정하도록 지시 하는 4개의 문자를 수신합니다.\a
따라서 이 시퀀스는 \e]0;STUFFGOESHERE\a
터미널의 헤더를 STUFFGOESHERE로 설정합니다. 귀하의 예에서는 헤더를 user/host/path로 설정합니다.
FWIW, xterm 이스케이프 시퀀스는 다음 위치에 문서화되어 있습니다.https://www.x.org/docs/xterm/ctlseqs.pdf
답변2
\e]0;
줄에 있는 문자
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
쉘에 의해 해석됨( \e
ASCII \033
ESC 와 동일)탈출하다특징),시작탈출 시퀀스. 순서마치다on \a
(쉘 \007` ASCII BEL로도 해석됨)벨).
이것은 0
매개변수입니다(소위운영 체제 명령), 터미널에 아이콘과 창 제목을 변경하라고 지시합니다.
기술적으로는 (ECMA-48)이어야 \e\\
하지만 처음에는 그런 식으로 시작되지 않았습니다. 1986년에 이 기능이 처음 도입되었을 때 xterm
제목은 인쇄할 수 없는 첫 번째 문자로 끝났습니다. 1989년 X11R4 이후 xterm에 의해 문자열 종결자로 인식됩니다 \a
(아이콘과 창 제목을 구별하기 위해 별도의 매개변수 1
및가 추가된 경우 2
).
rxvt
나는 몇 년 후에 이것을 발견했고 몇 년 후에 xterm이 다음과 같이 수정되었습니다.반품표준 문자열 종결자를 허용합니다. 변경 로그에는 구체적으로 언급되어 있지 않지만 ctlseqs.ms
1996년 8월에 처음 나타났습니다. 일반적으로 기능은 다른 터미널이 구현한 경우에만 허용됩니다 \a
.
후행이 없으면 격리된 이스케이프 문자는 터미널별 방식(텍스트 전체 무시 포함)에서 오류로 처리될 수 있습니다.
추가 자료:
편집: 오타 수정