Dans mon cas .bashrc
, j’utilise les codes de couleur du terminal ANSI pour colorier divers bits. Cela ressemble à ceci:
PS1='\u@\h:\w\[\033[33m\]$(virtual_env)\[\033[32m\]$(git_branch)\[\033[0m\]$ '
où virtual_env
et git_branch
sont des fonctions bash qui génèrent des choses sur stdout.
Maintenant, pour faciliter la lecture et la modification, j'aimerais stocker les codes de couleur dans des variables et les référencer, au lieu de les incorporer directement dans PS1
. J'ai donc un tas de variables comme celle-ci:
GREEN="\[\033[32m\]"
YELLOW="\[\033[33m\]"
RESET="\[\033[0m\]"
J'aimerais pouvoir écrire quelque chose comme:
PS1='\u@\h:\w${YELLOW}$(virtual_env)${GREEN}$(git_branch)${RESET}$ '
Mais cela ne fonctionne pas - les codes de couleur apparaissent dans l'invite, comme s'ils étaient échappés. Les couleurs fonctionnent correctement si j'utilise des guillemets doubles à la place PS1
, mais l'invite ne change que lorsque je le fais source ~/.bashrc
.
J'ai essayé d'autres choses que j'ai déjà vues faire: utiliser printf
, utiliser des guillemets simples pour les couleurs, insérer la variable \[
and \]
dans PS1
au lieu de la variable color, mais rien ne semble fonctionner.
Comment puis-je utiliser des variables pour les codes de couleur?
.bashrc
?