W moim przypadku .bashrc
uż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_env
i git_branch
są 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 printf
przy użyciu apostrofów dla kolorów, strzelaj \[
i \]
we PS1
zamiast zmiennej barwy, ale nic nie wydaje się do pracy.
Jak mogę używać zmiennych dla kodów kolorów?
.bashrc
?