Je suis nouveau sur git et j'essaie d'ajouter la branche git actuelle à mon invite déjà existante, qui est définie comme suit:
RESET="\[\017\]"
NORMAL="\[\033[0m\]"
RED="\[\033[31;1m\]"
YELLOW="\[\033[33;1m\]"
WHITE="\[\033[37;1m\]"
SMILEY="${WHITE}:)${NORMAL}"
FROWNY="${RED}:(${NORMAL}"
SELECT="if [ \$? = 0 ]; then echo \"${SMILEY}\"; else echo \"${FROWNY}\"; fi"
export PS1="${RESET}${YELLOW}\u@\h${NORMAL} \`${SELECT}\` ${YELLOW}\w $(__git_ps1) >${NORMAL} "
Je l'ai essayé (en me procurant à nouveau mon fichier .bashrc
) Et cela semblait fonctionner, mais je suis ensuite passé sur une autre branche et il n'a pas été mis à jour. Comment puis-je m'assurer que la $(__git_ps1)
n'est pas mise en cache?
Vous avez besoin d'une barre oblique inverse sur le $
Afin qu'elle ne soit pas développée immédiatement. (Comparez avec le `...`
, Qui est une manière différente d'écrire $(...)
.)
export PS1="${RESET}${YELLOW}\u@\h${NORMAL} \`${SELECT}\` ${YELLOW}\w \$(__git_ps1) >${NORMAL} "
Je serais d'accord avec @MikeSep sur l'utilisation de guillemets simples, mais c'est en fait un peu plus optimal de laisser les couleurs et autres être substituées immédiatement. Pas nécessaire, juste un peu mieux. Cela dit, il est plus facile de comprendre ce qui se passe si vous utilisez les guillemets simples.
Votre PS1
la chaîne est probablement évaluée avant d'être enregistrée, mais vous voulez vraiment le __git_ps1
commande à exécuter chaque fois que vous obtenez une invite de commande. Je vous recommande d'utiliser des guillemets simples au lieu de guillemets doubles pour votre export PS1='${RESET}...'
ligne.