Ubuntu 16에서 터미널 제목을 엉망으로 만들지 않고 gnome 터미널에서 bash 프롬프트를 어떻게 변경합니까?

Ubuntu 16에서 터미널 제목을 엉망으로 만들지 않고 gnome 터미널에서 bash 프롬프트를 어떻게 변경합니까?

나는 터미널 공간을 차지하는 모든 긴 디렉토리 경로를 좋아하지 않으므로 Python 스크립트를 통해 경로를 자릅니다. .bashrc 파일을 편집하고 PS1을 다음으로 교체했습니다.

export PROMPT_COMMAND='PS1="$(python /home/vinay/bash_promt.py)"'.

그리고 내가 그렇게 하면 해당 터미널의 제목이 더 이상 작동하지 않습니다. 그것은 단순히 Terminal짜증나는 것을 표시합니다. Bash에서 다음 명령을 실행하여 제목을 수동으로 변경할 수 있습니다.

PROMPT_COMMAND='echo -ne "\033]0;CUSTOM TITLE\007"'

내 bash에 설정되는 사용자 정의 프롬프트에 터미널 제목을 설정하는 방법이 있습니까?

답변1

gnome-terminal의 경우 터미널 제목은 PROMPT_COMMAND에 정의된 대로 설정됩니다 /etc/profile.d/vte-2.91.sh.

PROMPT_COMMAND는 이 스크립트에 정의된 대로 다음 두 가지 작업을 수행합니다.

  • OSC 0 이스케이프 시퀀스( \033]0;NEW_TITLE\007)를 사용하여 터미널 제목을 변경합니다.

  • OSC 7 이스케이프 시퀀스를 사용하여 현재 디렉토리에 대한 터미널의 개념을 변경합니다( \033]7;NEW_CURRENT_DIRECTORY\007, 이는 함수에서 제외됩니다 __vte_osc7).

에서 두 번째 항목을 제거하면 PROMPT_COMMAND새로 열린 터미널 창이나 탭이 이전 터미널에 있던 디렉터리에서 열리지 않습니다. 아마도 당신은 이것을 원하지 않을 것입니다.

따라서 쉘 시작 스크립트에서 소스를 가져온 후 제목을 와 비슷한 방식으로 설정 하고 현재 작업 디렉토리를 기본적으로 수행된 것과 정확히 동일하게 설정하는 vte-2.91.sh기본 설정을 구성해야 합니다 .PROMPT_COMMANDvte-2.91.sh

PS1나는 의 확인된 값(즉, 사용자 이름 등을 대체한 후)을 내부 또는 다른 곳에서 참조하는 방법을 알지 못합니다 PROMPT_COMMAND(색상 변경과 같은 이스케이프 시퀀스를 필터링하는 것은 물론입니다). 프롬프트와 창 제목에서 동일한 문자열을 보려면 PS1및 에 대한 해당 문자열 구성을 복제해야 한다고 생각합니다 PROMPT_COMMAND.

답변2

이것은 당신에게 도움이 될 것입니다

열려 있는 ~/.bashrc. 다음과 같은 줄을 찾으세요.

PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

#이 줄 앞에 문자를 넣어 주석 처리합니다 .

# PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

이제 다음 줄을 추가합니다(주석 처리된 줄 바로 뒤에 넣을 수도 있습니다).

PROMPT_COMMAND='echo -ne "\033]0;Custom Name\007"'

바꾸다Custom Name터미널 제목을 변경하고 싶은 대로 바꾸세요.

도움이 되었기를 바랍니다.

답변3

사용할 이스케이프 시퀀스는 다음과 같습니다.ESC]2;새 제목BEL어디ESC그리고탈출 및 벨 문자입니다. 좋다 \[\e]2;NEWTITLE\a\]. #Bash 이스케이프 시퀀스를 사용하여 프롬프트 제목을 변경하면 다음과 같습니다.

export PS1='\[\e]2;new title\a\]prompt > ' 문서 참조

따라서 사용자 정의 터미널 제목도 있는 다색 잘린 bash 프롬프트의 예는 다음과 같습니다.

export PS1='\[\e]2;$PWD\a\]\e[93m$USER\e[97m@\e[90m$HOSTNAME \e[93m$ \e[0m'

이 예에서 터미널 제목은 항상 현재 작업 디렉터리( $PWD)를 반영하며 터미널 프롬프트는 현재 있는 디렉터리에 관계없이 항상 다음과 같이 표시됩니다 user@hostname $.

터미널 제목이 항상 를 반영하도록 $PWD로 바꿀 수 있습니다 .CUSTOM TITLECUSTOM TITLE

업데이트
\[및 에서 인쇄되지 않은 문자를 래핑하지 않을 때는 주의하세요 \]. 그것은 그것 없이도 작동하며 나는 몇 년 동안 그것 없이도 그것을 해왔습니다. 하지만 오늘 몇 가지 설정을 통해 알게 된 것처럼몇 가지 문제가 발생할 수 있습니다터미널에서. 다음은 변수를 사용하고 색상 코드를 래핑한 더욱 깔끔한 버전입니다.

T_YELLOW='\[\e[93m\]'
T_WHITE='\[\e[97m\]'
T_GRAY='\[\e[90m\]'
T_DEFAULT='\[\e[0m\]'
T_TITLE='\[\e]2;$PWD\a\]'
export PS1="${T_TITLE}${T_YELLOW}$USER${T_WHITE}@${T_GRAY}$HOSTNAME${T_YELLOW} $ ${T_DEFAULT}"

관련 정보