W moim przypadku .bashrcużywam kodów kolorów terminala ANSI do kolorowania różnych bitów. To wygląda tak:
PS1='\u@\h:\w\[\033[33m\]$(virtual_env)\[\033[32m\]$(git_branch)\[\033[0m\]$ '
gdzie virtual_envi git_branchsą funkcjami bash, które wypisują rzeczy na standardowe wyjście.
Teraz, aby ułatwić czytanie i modyfikację, chciałbym przechowywać kody kolorów w zmiennych i odwoływać się do nich, zamiast osadzać je bezpośrednio w PS1. Mam więc kilka takich zmiennych:
GREEN="\[\033[32m\]"
YELLOW="\[\033[33m\]"
RESET="\[\033[0m\]"
Chciałbym móc napisać coś takiego:
PS1='\u@\h:\w${YELLOW}$(virtual_env)${GREEN}$(git_branch)${RESET}$ '
Ale to nie działa - kody kolorów wyświetlają się w monicie, jakby uciekły. Kolory działają poprawnie, jeśli zamiast nich używam podwójnych cudzysłowów PS1, ale wówczas monit zmienia się tylko wtedy, gdy to robię source ~/.bashrc.
Próbowałem innych rzeczy Widziałem ludzi zrobić - używając printfprzy użyciu apostrofów dla kolorów, strzelaj \[i \]we PS1zamiast zmiennej barwy, ale nic nie wydaje się do pracy.
Jak mogę używać zmiennych dla kodów kolorów?
.bashrc?