Isso parece ser possível. por exemplo:
export PS1="\[$(printf "\x1b[48;2;15;100;50m\]A nice dark green [rgb(15,100,50)]:\[\x1b[0m")\] "
export PS1="\[$(printf "\x1b[38;2;255;100;250m\]A lovely shade of pink [rgb(255,100,250)]:\[\x1b[0m")\] "
Pode haver uma maneira melhor do que chamar $ (printf ...). Espero que sim, mas não sei. A chave é envolver todas as coisas 'meta' (mas não o conteúdo real) em \[
e \]
para evitar que o shell conte-o como parte do tamanho do prompt para que ele seja reproduzido corretamente (por exemplo. ao pedalar pela história.)
Os últimos três números em cada expressão \x1b[...m
representam os valores desejados de vermelho, verde e azul (de 0 a 255).
O primeiro número define fundo (48) ou primeiro plano (38). Não sei o que o outro número faz, mas brincar com ele adicionando um \x1b[38;4m
adicional parece definir o texto para sublinhado.
Você pode obter mais informações sobre essa essência: link