SSH 세션 후 터미널 탭 제목


11

Mac OS X에서 (10.6.8에 있지만 다른 버전은 동일하다고 생각합니다) 원격 컴퓨터에 ssh하면 터미널의 현재 탭 제목이 변경됩니다. 짜증나게, 명시 적으로 exit또는 시간 초과를 통해 원격 컴퓨터에서 연결을 끊을 때 탭의 제목이 원래대로 변경되지 않습니다.

거의 매일마다 이것은 명령을 수행하거나 다른 명령을 수행 할 때 입력이있을 때 심장 마비로 고통을 겪습니다. 눈의 구석에서 탭 이름이 여전히 user @ remotehost라는 것을 알 수 있습니다. 나는 항상 pwd무언가를하기 전에 내 위치를 확인 하는 경향이있는 신중한 사용자 이지만, 내가 할 때 여전히 당황한 순간에 나를 붙잡고 DROP DATABASE x탭에서 원격 호스트 이름을 볼 수 있습니다.

간단히 말해서, 원격 호스트와의 연결을 끊을 때이 제목을 되 돌리는 방법이 있습니까, 아니면 제목을 재설정하기 위해 연결을 끊을 때마다 새 탭을 열어야합니까?


종료하면 터미널 이름도 재설정npm
Awesome_girl

답변:


20

a를 PROMPT_COMMAND하는 방법 .bash_profile

export PROMPT_COMMAND="echo -ne '\033]0;${USER}@${HOSTNAME}\007';$PROMPT_COMMAND"

PROMPT_COMMAND프롬프트 IS가 표시 때마다 실행됩니다.

PROMPT_COMMAND기존 설정을 잃지 않도록 기존 환경 변수를 포함합니다 (예 :) update_terminal_cwd.


2
코드를 바꾸지 말고 PROMPT_COMMAND에 코드 를 추가 하십시오 (예 : PROMPT_COMMAND="<your code>; $PROMPT_COMMAND"; 그렇지 않으면이 변수를 사용하는 다른 기능이 비활성화됩니다. 예를 들어, / etc / bashrc는이를 사용하여 터미널의 현재 작업 디렉토리를 설정하여 터미널이이를 표시하고 다양한 작업에 사용할 수 있도록합니다.
Chris 페이지

@ChrisPage $PROMPT_COMMAND다른 기능을 유지 하려면 새 코드가 필요 합니까?
reve_etrange

PS1에 직접 넣지 않겠습니까?
Yongwei Wu

이 편집 방법은 .bash_profile무엇입니까? sublime $HOME/.bash_profile?
Awesome_girl

@Awesome_girl subl명령이 설치되어 있는지 확인한 다음을 사용하여 터미널에서 파일을 편집하십시오 subl ~/.bash_profile. 이 명령이 존재하지 않으면 다음을 수행하십시오. sublimetext.com/docs/2/osx_command_line.html
XtraSimplicity

2

@ s01ipsist의 솔루션이 ZSH (macOS의 새로운 셸)에서 작동하게하려면 다음에 추가하면됩니다 ~/.zshrc.

export PROMPT_COMMAND="echo -ne '\033]0;${USER}@${HOST}\007';$PROMPT_COMMAND"
precmd() { eval "$PROMPT_COMMAND" }

1

.bash_profile파일 에 붙여 넣어야 할 내용은 다음과 같습니다 . 이것은 훨씬 깨끗하며 현재 작업 디렉토리를 업데이트 할 때 Apple 이하는 방식을 취합니다. 변수 update_term_title가 이미 있는지 확인하는 것은 실제로 필요하지는 않지만 (아무도 호출하지 않음 bash -- login) 가드로 나타납니다.

if [ -z "$INSIDE_EMACS" ]; then
    # Update the terminal title on every prompt shown
    update_term_title() {
        # Print user@short-hostname once SSH quits.
        echo -ne "\033]0;${USER}@${HOSTNAME%%.*}\007"
        # Or ${HOSTNAME} if short host names aren't your taste
        # Or echo -ne "\033]0;\007" if you don't want anything.
    }
    # Check to see if update terminal title is present?
    if ! echo $PROMPT_COMMAND | grep -q update_term_title
    then
       # This function is not found in PROMPT_COMMAND, add it
       PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND; }update_term_title"
    fi
fi

1
롤, 나는이 대답을 쓴 궁금 ... 그것은 밖으로 회전은 :-) 날이었다
zapstar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.