Qual é a melhor prática para personalizar o prompt do Bash (também conhecido como variável de ambiente PS1)?

Qual é a melhor prática para personalizar o prompt do Bash (também conhecido como variável de ambiente PS1)?

Estou tentando adicionar o nome do branch Git ao meu prompt do Bash alterando a PS1variável assim:

PS1=`echo "$PS1" | sed 's/\\\\\$ $/\$(__git_ps1)\\\\\$ /'`

E se bem entendi, não é recomendado atualizar ~/.bashrcpara fins de personalização. Todos os artigos que encontrei sugerem atualização .profileou .bash_profilepara tais fins. Então, estou procurando um lugar perfeito para colocar essa linha.

Estes são os lugares que experimentei até agora:

  • .profile: não fornecido porgnome-terminal
  • .bash_profile: não fornecido porgnome-terminal
  • .bash_login: não fornecido porgnome-terminal
  • .bash_aliases: funciona, mas não acho que PS1tenha nada a ver com aliases

Estou usando o Ubuntu Desktop e trabalho em gnome-terminalou byobu, então preciso encontrar um arquivo que seja originado quando inicio bashem um ambiente X. Em seguida, procurei .bashrcoutros arquivos originados após atribuir um valor a PS1. Existem .bash_aliasese /usr/share/bash-completion/bash_completionque não considero adequadas para esse fim.

Quais são as outras opções? E qual é a melhor prática para personalizar o prompt do Bash?

Responder1

De acordo com o seguinte HOWTO, o seu .bashrcé realmente o melhor lugar para ajustar o $PS1:

a string PS1 deve ser definida em .bashrc. isso ocorre porque os bashes não interativos fazem de tudo para desativar o PS1. a página de manual do bash informa como a presença ou ausência de PS1 é uma boa maneira de saber se alguém está em uma sessão bash interativa ou não interativa (ou seja, script).

[...]

portanto, deve-se enfatizar que PS1=..blah..deveria estar dentro .bashrce não .profile.

Fonte:http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/setps.html

Responder2

Concordo com @sylvain-pineau que deveria estar localizado em .bashrc.

Estou usando um script de shell git-prompt que bifurquei no github. Funciona muito bem com git, svn e hg. Ele mostra em qual branch você está, quais arquivos você possui que são novos, quais arquivos foram alterados (em cores diferentes) e o status do seu último comando bash.

Você pode baixá-lo assim:

wget https://raw.githubusercontent.com/stalet/git-prompt/master/git-prompt.sh
chmod +x git-prompt.sh

Então, em .bashrc, estou usando um teste para ver se meu script git-prompt está disponível e, em seguida, fornecê-lo:

[[ -s ~/config/git-prompt.sh ]] && source ~/config/git-prompt.sh

Isenção de responsabilidade, sou um comprometedor do projeto git-prompt github.

informação relacionada