Não gosto que todos os caminhos de diretório longos ocupem o espaço do meu terminal, então os trunco por meio de um script python. Editei o arquivo .bashrc e substituí o PS1 por
export PROMPT_COMMAND='PS1="$(python /home/vinay/bash_promt.py)"'.
E quando faço isso, o título do terminal não funciona mais. Ele simplesmente exibe Terminal
o que é irritante. Posso alterar o título manualmente executando o seguinte comando no bash:
PROMPT_COMMAND='echo -ne "\033]0;CUSTOM TITLE\007"'
Existe uma maneira de definir o título do terminal para o prompt personalizado que está sendo definido no meu bash.
Responder1
Para o gnome-terminal, o título do terminal é definido por meio PROMPT_COMMAND
do qual é definido em /etc/profile.d/vte-2.91.sh
.
PROMPT_COMMAND
, conforme definido neste script, faz duas coisas:
altera o título do terminal usando a sequência de escape OSC 0 (
\033]0;NEW_TITLE\007
),altera a noção do terminal do diretório atual usando a sequência de escape OSC 7 (
\033]7;NEW_CURRENT_DIRECTORY\007
, isso é fatorado na__vte_osc7
função).
Se você remover o segundo do seu arquivo PROMPT_COMMAND
, as janelas ou guias do terminal recém-abertas não abrirão no diretório onde você estava no terminal anterior. Muito provavelmente você não quer isso.
Portanto, em seus scripts de inicialização do shell, após o fornecimento, vte-2.91.sh
você deve construir seu preferido PROMPT_COMMAND
que defina o título de maneira semelhante a vte-2.91.sh
e defina o diretório de trabalho atual exatamente como é feito por padrão.
Não conheço nenhuma maneira de me referir ao PS1
valor resolvido de (ou seja, depois de substituir o nome de usuário e tal) dentro PROMPT_COMMAND
ou em qualquer outro lugar (muito menos filtrar as sequências de escape, como mudanças de cores). Se você deseja ver a mesma string no seu prompt e no título da janela, acredito que você precisa duplicar a construção dessa string para PS1
and PROMPT_COMMAND
.
Responder2
Isso funcionará para você
abrir ~/.bashrc
. Encontre a linha que diz:
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
Comente esta linha, colocando um #
caractere na frente dela:
# PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
Agora adicione esta linha (você pode colocá-la logo após a linha comentada):
PROMPT_COMMAND='echo -ne "\033]0;Custom Name\007"'
SubstituirCustom Name
com o que você deseja alterar para o título do Terminal.
Espero que isto ajude.
Responder3
A sequência de escape a ser usada éESC]2;novo títuloBELondeESCeBELsão os personagens de fuga e sino. Como \[\e]2;NEWTITLE\a\]
. Usando sequências de escape #Bash, alterar o título no seu prompt é semelhante a:
export PS1='\[\e]2;new title\a\]prompt > '
referência do documento
Portanto, um exemplo de prompt bash truncado multicolorido que também possui um título de terminal personalizado é:
export PS1='\[\e]2;$PWD\a\]\e[93m$USER\e[97m@\e[90m$HOSTNAME \e[93m$ \e[0m'
Nesse exemplo, o título do terminal sempre refletirá o diretório de trabalho atual ( $PWD
) e o prompt do terminal sempre terá a seguinte aparência, independentemente do diretório em que você estiver: user@hostname $
.
Você pode substituir $PWD
por CUSTOM TITLE
para fazer com que o título do terminal sempre reflita CUSTOM TITLE
.
Atualizar
Tenha cuidado ao não agrupar caracteres não impressos em \[
e \]
. Funciona sem ele e faço isso sem eles há anos. Porém, como descobri hoje com algumas configurações,pode causar alguns problemasno terminal. Abaixo está uma versão mais limpa usando variáveis e agrupando os códigos de cores:
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}"