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_env
y git_branch
son 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 PS1
lugar de la variable de color, pero nada parece funcionar.
¿Cómo puedo usar variables para los códigos de color?
.bashrc
?