Como faço para alterar o prompt do bash no terminal do gnome sem atrapalhar o terminal no Ubuntu 16?

2

Eu não gosto de todos os longos caminhos de diretório para sentir o espaço do meu terminal, então trunco-os através de um script python. Eu editei o arquivo .bashrc e substituí o PS1 por

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

E quando eu faço o título desse terminal não funciona mais. Ele simplesmente exibe Terminal , o que é irritante. Eu posso mudar o título manualmente, executando o seguinte comando no bash:

PROMPT_COMMAND='echo -ne "3]0;CUSTOM TITLE
export PROMPT_COMMAND='PS1="$(python /home/vinay/bash_promt.py)"'.
7"'

Existe uma maneira de definir o título do terminal para o prompt personalizado que está sendo definido no meu bash.

    
por Vinay Tiwary 15.05.2016 / 11:17

3 respostas

1

Para o gnome-terminal, o título do terminal é definido via PROMPT_COMMAND , que é 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 do OSC 0 ( 3]0;NEW_TITLE3]7;NEW_CURRENT_DIRECTORY__vte_osc777 ),

  • altera a noção do terminal do diretório atual usando a sequência de escape do OSC 7 ( PROMPT_COMMAND , isso é fatorado para a função vte-2.91.sh ).

Se você remover o segundo do seu PROMPT_COMMAND , suas janelas ou guias de terminal recém-abertas não serão abertas no diretório em que você estava no terminal anterior. Muito provavelmente você não quer isso.

Assim, nos seus scripts de inicialização do shell, depois de obter vte-2.91.sh , você precisa construir seu PS1 preferido que define o título de maneira semelhante a PROMPT_COMMAND e define o diretório de trabalho atual exatamente como é feito por padrão .

Não tenho conhecimento de nenhuma maneira de me referir ao valor resolvido de PS1 (ou seja, depois de substituir o nome de usuário e tal) dentro de PROMPT_COMMAND ou em qualquer outro lugar (muito menos filtrar as seqüências de escape como cor alterar). Se você deseja ver a mesma string no seu prompt e no título da janela, acredito que você precise duplicar a construção dessa string para %code% e %code% .

    
por egmont 15.05.2016 / 13:54
0

Isso funcionará para você

abra ~/.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:

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

Agora adicione esta linha (você pode querer colocá-la logo após a linha comentada):

PROMPT_COMMAND='echo -ne "3]0;Custom Name
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
7"'

Substitua Custom Name pelo que quiser para alterar o título do Terminal.

Espero que isso ajude.

    
por Sinscary 15.05.2016 / 11:31
0

A seqüência de escape a ser usada é ESC] 2; new titleBEL onde ESC e BEL são os caracteres de escape e campainha. Como \[\e]2;NEWTITLE\a\] . Usando #Bash seqüências de escape, mudando o título em seu prompt se parece com:

export PS1='\[\e]2;new title\a\]prompt > ' doc ref

Portanto, um exemplo de um prompt bash truncado de várias cores 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 será sempre semelhante ao seguinte, independentemente de em qual diretório você está: user@hostname $ .

Você pode substituir $PWD por CUSTOM TITLE para fazer com que o título do terminal reflita sempre CUSTOM TITLE .

Atualizar
Tenha cuidado ao não envolver caracteres não impressos em \[ e \] . Ele funciona sem isso e eu tenho feito isso sem eles há anos. No entanto, como eu descobri hoje com algumas configurações, ele pode causar alguns problemas no terminal. Abaixo está uma versão mais limpa usando variáveis e envolvendo 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}"
    
por jtlindsey 04.11.2017 / 14:00