~/.bash_aliases
où je règle PS1 et est inclus dans ~/.bashrc
(paramètres par défaut)
# color PS1
PS1="\[\033[01;90m\]\D{%H:%M} \[\033[01;33m\]Ubuntu\[\033[00m\] \[\033[01;34m\]\w\[\033[01;35m\]$(__git_ps1) \[\033[01;36m\]\$\[\033[00m\] "
Mais quand je démarre un terminal, je reçois une erreur __ git_ps1: commande introuvable
Mais lorsque je lance le manuel de fonction $ __git_ps1
dans un dossier git, il renvoie la branche actuelle.
Aussi quand je cours manuellement$ PS1="\[\033[01;90m\]\D{%H:%M} \[\033[01;33m\]Ubuntu\[\033[00m\] \[\033[01;34m\]\w\[\033[01;35m\]$(__git_ps1) \[\033[01;36m\]\$\[\033[00m\] "
la PS1 est mise à jour et la partie __git_ps1
est ajoutée.
Je ne l'ai pas installé moi-même. J'ai seulement installé Git.Sudo apt install -y git
(version 2.19.1 de Git)
__git_ps1
est défini dans /usr/lib/git-core/git-sh-Prompt
(le fichier sur github )
grep __git_ps1 ~/.bashrc ~/.profile ~/.bash_profile ~/bash.login ~/.bash_aliases /etc/bash.bashrc /etc/profile /etc/profile.d/* /etc/environment 2>/dev/null
Seul le fichier .bash_aliases
apparaît.
Un grep complet de git-sh-promt ne renvoie que des correspondances binaires
Sudo grep 'git-sh-Prompt' -nr /
Qu'est-ce qui ne va pas ici?
Utiliser une version décolorée pour plus de clarté:
PS1="\D{%H:%M} Ubuntu \w$(__git_ps1) \$ "
Les guillemets doubles indiquent à Bash d'évaluer ce qu'il y a entre les guillemets, y compris $(__git_ps1)
, mais /usr/lib/git-core/git-sh-Prompt
n'a pas encore été recherché, d'où l'erreur.
Changez-le simplement pour utiliser des guillemets simples, ce qui empêchera l’évaluation de $(__git_ps1)
tant que la PS1 n’est pas évaluée (c’est-à-dire lorsque le shell interactif est prêt à être saisi et affiche l’invite).
PS1='\D{%H:%M} Ubuntu \w$(__git_ps1) \$ '
Échapper au signe dollar fonctionne aussi, mais il est plus difficile à lire:
PS1="\D{%H:%M} Ubuntu \w\$(__git_ps1) \$ "
Soit dit en passant, ~/.bash_aliases
est destiné aux alias de Shell. Il est donc étrange de placer votre PS1
. Personnellement, je le mettrais plutôt dans ~/.bashrc
.