Pourquoi pas mon bash mise à jour rapide?
Question
Je suis nouveau à git et je suis en train d'ajouter la branche git actuelle à mon message déjà existant, qui est défini 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 s'approvisionnant mon fichier .bashrc
à nouveau) et il semblait travailler, mais je suis allé sur une autre branche et il n'a pas mis à jour. Comment puis-je assurer que le $(__git_ps1)
ne cache?
La solution
Vous avez besoin d'une barre oblique inverse sur la $
il est donc pas immédiatement élargi. (Comparez la `...`
, ce qui est une autre façon d'écrire $(...)
.)
export PS1="${RESET}${YELLOW}\u@\h${NORMAL} \`${SELECT}\` ${YELLOW}\w \$(__git_ps1) >${NORMAL} "
Je suis d'accord avec @MikeSep sur l'utilisation des guillemets simples, mais il est en fait un peu plus optimale pour laisser les couleurs et comme être substitué immédiatement. Pas nécessaire, juste un peu mieux. Cela dit, il plus facile à comprendre ce qui se passe si vous utilisez les guillemets simples.
Autres conseils
Votre chaîne de PS1
est probablement obtenir une évaluation avant d'être sauvées, mais vous voulez vraiment la commande __git_ps1
pour 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 ligne export PS1='${RESET}...'
.