답변:
여기에 답변
나는 인용한다 :
user title
코드를 제거하고 1 에서gnome-terminal 3.14
. 이스케이프 시퀀스를 사용하여 제목을 설정하는 유일한 방법은 다음과bash
같습니다.PROMPT_COMMAND='echo -ne "\033]0;YOUR TITLE GOES HERE\007"'
1 : 그놈 참조 버그 724110 와 그놈 버그 740188을 .
gnome-shell
됩니다. 새 창이나 탭에서 새 터미널을 여는 메뉴도 사라졌습니다 (단, 여전히 바로 가기를 통해 수행 할 수 있습니다. 왜?! 큰 스마트 버튼으로 모든 것을 대체하십시오 : 클릭과 아무 것도합니다!)
.bashrc
솔루션 커비에 의해 제안은 나를 위해 일한 :
set-title(){
ORIG=$PS1
TITLE="\e]2;$@\a"
PS1=${ORIG}${TITLE}
}
그런 다음 내 프롬프트에서 : $ set-title test-title
set-title "longer and "
같이 몇 번 호출 한 후 :echo $PS1 \[\e]0; \u@\h: \w \a\]\u@\h:\w\[\033[m\]$(__git_ps1)$ \e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a
Control + Z
다음, set-title X
다음 fg
과정을 다시 시작합니다.
나는 그들이 이와 같은 사용자 친화적 인 기능을 제거했다고 믿을 수 없습니다.
ROXTerm ( http://roxterm.sourceforge.net )으로 전환 하여 작업을 훌륭하게 수행합니다. 우분투 패키지로 제공됩니다 :
sudo apt-get install roxterm
그런 다음 공룡이 자신의 길을 계속하게하십시오 ;-)
위에서 제안한대로 RoxTerm을 사용해 보았으며 좋은 결과를 얻었습니다. 그러나 나는 15.04에 그놈 2의 연속 인 MATE 프로젝트의 일부인 MATE 터미널에 정착했습니다.
sudo apt-get install mate-terminal
그 터미널은 그놈 터미널 코드를 기반으로합니다.
해설 : 그놈 터미널 개발자들의 사고 방식을 이해하기는 어렵습니다. 터미널 탭의 이름을 지정하는 "방법"과 올바른 방법을 찾기가 어렵습니다. 이 경우 사용자가 이름을 지정하기 어려운 이유는 무엇입니까? 전혀 똑똑하지 않습니다.
이제 나는 하루의 더 나은 부분을 위해 이것을 조사하고 마침내이 제목을 설정하는 방법을 찾았습니다. \ e] 0으로 시작하는 이스케이프 시퀀스를 통해 수행됩니다. BEL 문자 (= \ 007 = \ a)로 끝납니다. I는 전술 한 바와는 달리, 단말 애플리케이션 쉘 뒤에서 통신 인 등 이스케이프 시퀀스를 통해, 매우 제한된 가능 (몇있다).
위에서부터 :
PROMPT_COMMAND='echo -ne "\e]0;YOUR TITLE GOES HERE\a"'
그것은 수 작동하지만 항상 그렇지 않습니다. PROMPT_COMMAND
명령을 보낼 때마다 내용이 실행되는 변수이므로이 이스케이프 시퀀스도 보냅니다. 그러나 이것은 명령 행 프롬프트를 설정하는 PS1 변수의 이스케이프 시퀀스로 대체 될 수 있습니다. 이것이 위의 내용이 여기서 효과가없는 이유입니다.
이전 우분투 설치에서 나는 이것을 잡고 명령 프롬프트 (오른쪽 부분 ]
)를 설정하고 필요한 이스케이프 시퀀스 (왼쪽 부분, 최대 포함 ]
) 를 보냅니다 .
PS1="\[\e]0;\u@\h: \w\a\]\u@\h:\w\$ "
$PROMPT_COMMAND
매번 해석 할 필요가 없기 때문에 성능이 더 우수합니다 . 또한 Bash에는 \u
현재 사용자 이름, \W
현재 디렉토리 이름 또는 \w
현재 작업 디렉토리의 전체 경로에 대해 더 많은 이스케이프 시퀀스 가 있으므로 선택적으로의 숫자로 마지막 몇 자릿수로 트리밍하므로 더 많은 옵션이 $PROMPT_DIRTRIM
있습니다. PROMPTING
Bash 매뉴얼 페이지의 장 을 참조 하십시오. 또한 이스케이프 시퀀스는 여기 \[
와 \]
여기에 둘러싸여 야 합니다.
고정 제목을 설정하려면 다음을 수행하십시오.
PS1="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ "
즐겨!
조사하는 동안 나는 또한 gnome-terminal 소스 코드를 이해하려고 노력했으며, 이는 소스 코드를 생성하고 제목 설정 및 이스케이프 시퀀스 읽기에 대한 지원은 보안 위험으로 간주됩니다. 여기 (case 20, case 21) 및 here ( "창 제목보고").
PS1
사용자 정의 명령 프롬프트 설정과 같은 다른 용도 에 대한 이전 정의가 지워집니다 . 방금 기존 PS1
내용 에 이스케이프 시퀀스를 추가하려고 시도했지만 작동하는 것 같습니다. 이처럼 : PS1+="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ "
위와 같이 $ PROMPT_COMMAND를 설정하면 아무런 영향을 미치지 않습니다. Bash가 터미널 내에서 실행되고 부모 프로세스 (여기 : gnome-terminal)가 유닉스와 같은 OS에서 자녀의 환경을 읽을 수 없기 때문에 놀랍지 않습니다. 보다 간단한 것을 사용하여
PROMPT_COMMAND='echo bla'
echo bla을 실행하고 다른 작업은 수행되지 않습니다.
편집 : 하나는 이스케이프 시퀀스로 래핑해야합니다. 다른 대답을 참조하십시오. 어린이 환경을 읽을 수는 없지만 이러한 시퀀스를 통해 부모와 다시 대화하는 것이 가능합니다.
그놈 버그 740188에서는 .bashrc에서 title () 함수를 정의하는 것에 대해 이야기합니다. 각 탭마다 다른 것이 있습니까? 가능하다면 전혀 못생긴 해킹!
Stackexchange에 대한 다른 설명조차도 $ PS1 설정에 대해 이야기합니다. 죄송합니다. 제목이 아니라 명령 프롬프트입니다.
즉, 그들은 환경 설정 대화 상자에서 약간의 공간을 절약하기 위해 수리를 넘어 엉망이되었습니다. 세상에
이제 개발자의 결정을 되돌릴 수있는 유일한 기회는 심각한 혼란을 일으키는 것입니다. 우리는 어떻게 이런 폭풍을 만들까요?