Bash에서 PROMPT_COMMAND가 보이지 않는 값으로 설정되는 이유는 무엇입니까?

Bash에서 PROMPT_COMMAND가 보이지 않는 값으로 설정되는 이유는 무엇입니까?

RHEL6 및 CentOS 6에서는 다음과 같이 /etc/bashrc설정합니다 PROMPT_COMMAND.

case $TERM in
xterm*)
    if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
        PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
    else
        PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007"'
    fi
    ;;
screen)
    if [ -e /etc/sysconfig/bash-prompt-screen ]; then
        PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
    else
        PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\033\\"'
    fi

내가 아는 한, 이러한 옵션은 모두 인쇄되어 보이지 않습니다. 무슨 소용이 있나요?

PROMPT_COMMAND프롬프트가 표시되기 전에( PS1보통) 이 작업이 수행된다는 것을 알고 있습니다 . 보이지 않는 것을 에코하는 것이 왜 쓸모가 있는지 모르겠습니다.

답변1

\033(이스케이프된) 문자의 8진수 코드입니다 . 이는 에코 문자열 이 터미널 제어 시퀀스 Esc라는 좋은 힌트입니다 . PROMPT_COMMAND예제의 두 시퀀스 모두 터미널 제목을 로 설정하는 것으로 나타납니다 user@host:pwd.

첫 번째 경우에는 xterm*창 이름과 아이콘 제목을 설정합니다. 자세한 지침은 목록을 확인하세요.xterm 제어 시퀀스찾을 때까지 아래로 스크롤하세요.OSC Pt;아래에운영 체제 제어(OSC는 ESC ], ST는 ESC \).

두 번째 경우는 screen터미널 에뮬레이터의 경우입니다.화면 제어 순서, 설명하는ESC _ 화면의 하드 상태 설정(간단히 말하면 화면 창의 제목입니다.)

관련 정보