Nel mio .bashrc
, utilizzo i codici colore del terminale ANSI per colorare vari bit. Sembra così:
PS1='\u@\h:\w\[\033[33m\]$(virtual_env)\[\033[32m\]$(git_branch)\[\033[0m\]$ '
dove virtual_env
e git_branch
sono funzioni bash che producono roba su stdout.
Ora, per semplificare la lettura e la modifica, vorrei memorizzare i codici colori in variabili e fare riferimento ad essi, anziché incorporarli direttamente in PS1
. Quindi ho un sacco di variabili come questa:
GREEN="\[\033[32m\]"
YELLOW="\[\033[33m\]"
RESET="\[\033[0m\]"
Mi piacerebbe poter scrivere qualcosa del tipo:
PS1='\u@\h:\w${YELLOW}$(virtual_env)${GREEN}$(git_branch)${RESET}$ '
Ma questo non funziona: i codici colore vengono visualizzati nel prompt, come se fossero sfuggiti. I colori funzionano correttamente se uso invece virgolette doppie PS1
, ma il prompt cambia solo quando lo faccio source ~/.bashrc
.
Ho provato altre cose che ho visto fare dalla gente: usare printf
, usare virgolette singole per i colori, inserire la \[
e \]
in PS1
invece della variabile color, ma nulla sembra funzionare.
Come posso usare le variabili per i codici colore?
.bashrc
?