web-dev-qa-db-fra.com

Quelle est la meilleure pratique de personnalisation de l'invite Bash (ou variable d'environnement PS1)?

J'essaie d'ajouter le nom de la branche Git à mon invite Bash en modifiant la variable PS1 comme ceci:

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

Et si je comprends bien, il n'est pas recommandé de mettre à jour ~/.bashrc à des fins de personnalisation. Tous les articles que j'ai trouvés suggèrent de mettre à jour .profile ou .bash_profile à ces fins. Je cherche donc un endroit parfait pour mettre cette ligne.

Ce sont les endroits que j'ai essayés jusqu'à présent:

  • .profile: non généré par gnome-terminal
  • .bash_profile: non généré par gnome-terminal
  • .bash_login: non généré par gnome-terminal
  • .bash_aliases: fonctionne, mais je ne pense pas que PS1 ait quelque chose à voir avec les alias

J'utilise Ubuntu Desktop et je travaille dans gnome-terminal ou byobu, je dois donc trouver un fichier qui est généré lorsque je lance bash dans un environnement X. Ensuite, j’ai cherché dans .bashrc d’autres fichiers sources après avoir attribué une valeur à PS1. Il y a .bash_aliases et /usr/share/bash-completion/bash_completion qui, à mon avis, ne conviennent pas à cette fin.

Quels sont les autres choix? Et quelle est la meilleure pratique de personnalisation de l'invite Bash?

2
Sah

Selon le HOWTO suivant, votre .bashrc est en fait le meilleur endroit pour modifier $ PS1:

la chaîne PS1 doit être définie dans .bashrc. ceci est dû au fait que les bashes non interactifs font tout leur possible pour désinstaller PS1. la page de manuel bash explique en quoi la présence ou l'absence de PS1 est un bon moyen de savoir si une session bash est interactive ou non interactive (c'est-à-dire avec un script).

[...]

par conséquent, il convient de souligner que PS1=..blah.. doit être dans .bashrc et non pas .profile.

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

2
Sylvain Pineau

Je suis d’accord avec @ sylvain-pineau pour dire qu’il devrait être situé en .bashrc.

J'utilise un script shell git-Prompt que j'ai créé sur github. Cela fonctionne très bien avec git, svn et hg. Il vous indique dans quelle branche vous vous trouvez, quels fichiers nouveaux vous avez, quels fichiers sont modifiés (dans des couleurs différentes) et l'état de votre dernière commande bash.

Vous pouvez le télécharger comme ceci:

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

Ensuite, dans .bashrc, j'utilise un test pour voir si mon script git-Prompt est disponible et le rechercher ensuite:

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

Clause de non-responsabilité, je suis membre du projet gitub git-Prompt.

0
stalet