O prompt remoto é definido pelo controle remoto ~/.bashrc
. Então você ainda precisa copiá-lo para o servidor remoto. No entanto, você pode usar um único ~/.bashrc
para todos os hosts e definir a cor do prompt com base no nome do host:
[ "$PS1" ] || return 0 # continue only when interactive
case $(hostname -s) in
laptop*)
prompt_color='3[48;5;16m3[38;5;46m' # green(46) on black(16)
;;
server*)
prompt_color='3[48;5;16m3[38;5;196m' # red(196) on black(16)
;;
esac
ORIG_PS1=$PS1 # in case needed
PS1='<\['${prompt_color}'\]\h\[3[m\]:\w>\$ '
unset prompt_color
Notas:
-
Não defina
PS1
se ainda não estiver definido (ou seja, se o shell não for interativo). Testar sePS1
não é vazio é uma maneira muito comum de decidir se o shell é interativo e você não quer confundir programas que fazem isso. (Indiscutivelmente um teste mais preciso é verificar se$-
contémi
.) -
Se quiser que esse código seja executado ao efetuar login em um servidor remoto, você deverá ter um dos arquivos de perfil sempre como fonte
~/.bashrc
. Mas eu suponho que você saiba disso. -
Em
PS1
, os códigos de escape devem estar entre\[...\]
. -
\[033[m
redefine o primeiro plano e o segundo plano como padrão. Então, aqui,:\w
aparecem no primeiro plano / segundo plano do terminal. -
\[033[48;5;XXXm3[38;5;YYYm
define o plano de fundo / primeiro plano comoXXX
/YYY
. -
Para um script que despeja as cores disponíveis, tente
colortest
. -
Para verificar a aparência do prompt:
echo -e "<3[48;5;16m3[38;5;196mhost3[m:dir>$ "