명령을 입력할 때마다 GNU 화면 탭의 이름이 변경됩니다.

명령을 입력할 때마다 GNU 화면 탭의 이름이 변경됩니다.

Gnu 화면을 사용할 때 다른 탭에서 다른 컴퓨터로 ssh를 실행하고 그에 따라 탭 이름을 바꾸면 제대로 작동합니다. 탭 이름은 유지됩니다.

원래 컴퓨터의 터미널인 새 탭에서 명령을 입력할 때마다 탭 이름이 현재 작업 디렉터리로 변경됩니다.

예:

/////////// 이것이 이전의 모든 모습이었습니다.

    [me@mac ~]$
    [ me ][0*$ me@mac:~  1-$ web01  2$ dev03

////////// 탭 이름 설정

    [me@mac ~]$ 
    Set window's title to: test
    [ me ][0*$ test  1-$ web01 clone  2$ dev03 clone

//////// 명령을 입력합니다.pwd

    [me@mac ~]$ pwd
    /home/me
    [me@mac ~]$
    [ me ][0*$ me@mac:~  1-$ web01 clone  2$ dev03 clone

탭의 이름은 다시 현재 작업 디렉터리로 변경됩니다. 다른 컴퓨터로 SSH를 연결하는 탭에서는 이런 일이 발생하지 않습니다. 그래서 개인 설정 문제일지도 모른다고 생각했는데, .bashrc, .bash_profile, .screenrc 파일에는 헤더와 관련된 내용이 없는 것 같습니다.

답변1

쉘 구성은 터미널 제목을 현재 실행 중인 명령으로 설정하고 있습니다. 이는 상당히 일반적인 구성입니다. 이는 쉘에 의해 수행되므로 쉘이 다른 쉘 구성을 가진 다른 시스템에서 실행 중인 경우에는 수행되지 않습니다. 화면 창 제목을 설정하는 이스케이프 시퀀스는 이스케이프 문자(바이트 값 27)입니다.␛kTITLE␛\

Bash에서 이 이스케이프 시퀀스를 내보내는 코드를 찾으세요. 이스케이프 문자는 \e또는 로 표시될 수 있습니다 \033. 이 코드는 프롬프트( PS1)에 있거나 명령( )을 실행한 후 새 프롬프트가 표시되기 전에 실행되는 명령에 있을 수 있습니다 PROMPT_COMMAND. 해당 값을 확인하십시오(리터럴 이스케이프 문자가 포함된 경우 터미널에 이스케이프 시퀀스를 보내지 않도록 주의하십시오).

printf 'PS1=%s\nPROMPT_COMMAND=%s\n' "$PS1" "$PROMPT_COMMAND" | cat -v

DEBUG이 이스케이프 시퀀스는 명령을 실행하기 전에 트랩을 통해 실행될 수도 있지만 덜 일반적입니다.

trap -p DEBUG

이러한 변수(또는 트랩)는 사용자 또는 시스템 전체 구성인 bash 구성에서 설정되어야 합니다. 일반적으로 ~/.bashrc일부 /etc/bash.bashrc시스템에서는 , ~/.bash_profile, ~/.profile또는 , 또는 그 중 하나에 포함된 파일일 /etc/profile수도 있습니다. ~/.bash_login더 적은 수의 설정으로 새 셸을 실행하여 범위를 좁힐 수 있습니다.

env -i bash                  # no environment variables or per-user settings
env -i HOME="$HOME" bash     # no environment variables, normal interactive shell
env -i HOME="$HOME" bash -l  # no environment variables, login shell
HOME=/none bash              # skips your per-user settings

.bashrc이들 중 어느 것이 문제를 일으키는지 비교함으로써 설정이 사용자 설정에서 왔는지 시스템 전체 설정에서 왔는지, 대화형 셸에서 읽은 설정인지 로그인 시간 파일( .profile등) 에서 왔는지 알 수 있습니다 .

답변2

PROMPT_COMMAND는 /etc/bashrc에 설정되어 있습니다:

if [ -z "$PROMPT_COMMAND" ]; then
  case $TERM in
  .
  .
  .
    ;;
  screen*)
    if [ -e /etc/sysconfig/bash-prompt-screen ]; then
        PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
    else
        PROMPT_COMMAND='printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"'
    fi
    ;;

따라서 ~/.bashrc에서 PROMPT_COMMAND를 ''로 설정하면 탭 이름 업데이트를 중지할 수 있습니다.

export PROMPT_COMMAND=''

또는 창 이름을 유지하려는 경우 설정을 해제할 수 있습니다.

unset PROMPT_COMMAND

그런 다음 CTRL-a A를 사용하여 창 이름을 변경하십시오.

관련 정보