En mi .bashrc, uso códigos de color de terminal ANSI para colorear varios bits. Se parece a esto:
PS1='\u@\h:\w\[\033[33m\]$(virtual_env)\[\033[32m\]$(git_branch)\[\033[0m\]$ '
donde virtual_envy git_branchson funciones bash que generan cosas en stdout.
Ahora, para que sea más fácil de leer y modificar, me gustaría almacenar los códigos de color en variables y referirme a ellos, en lugar de incrustarlos directamente PS1. Entonces tengo un montón de variables como esta:
GREEN="\[\033[32m\]"
YELLOW="\[\033[33m\]"
RESET="\[\033[0m\]"
Me gustaría poder escribir algo como:
PS1='\u@\h:\w${YELLOW}$(virtual_env)${GREEN}$(git_branch)${RESET}$ '
Pero esto no funciona: los códigos de color aparecen en el mensaje, como si hubieran escapado. Los colores funcionan correctamente si uso comillas dobles en su lugar PS1, pero luego el aviso solo cambia cuando lo hago source ~/.bashrc.
He intentado otras cosas que he visto hacer a la gente: usar printf, usar comillas simples para los colores, poner el \[y \]en PS1lugar de la variable de color, pero nada parece funcionar.
¿Cómo puedo usar variables para los códigos de color?
.bashrc?