No meu .bashrc
, uso códigos de cores do terminal ANSI para colorir vários bits. Se parece com isso:
PS1='\u@\h:\w\[\033[33m\]$(virtual_env)\[\033[32m\]$(git_branch)\[\033[0m\]$ '
onde virtual_env
e git_branch
são funções bash que produzem coisas no stdout.
Agora, para facilitar a leitura e a modificação, eu gostaria de armazenar os códigos de cores nas variáveis e consultá-las, em vez de incorporá-las diretamente PS1
. Então, eu tenho um monte de variáveis como esta:
GREEN="\[\033[32m\]"
YELLOW="\[\033[33m\]"
RESET="\[\033[0m\]"
Eu gostaria de poder escrever algo como:
PS1='\u@\h:\w${YELLOW}$(virtual_env)${GREEN}$(git_branch)${RESET}$ '
Mas isso não funciona - os códigos de cores aparecem no prompt, como se tivessem escapado. As cores funcionarão corretamente se eu usar aspas duplas em vez disso PS1
, mas o prompt somente será alterado quando o fizer source ~/.bashrc
.
Eu tentei outras coisas que vi pessoas fazerem - usando printf
, usando aspas simples para as cores, colocando a variável in \[
e \]
ao PS1
invés da variável de cor, mas nada parece funcionar.
Como posso usar variáveis para os códigos de cores?
.bashrc
?