No XTerm, você pode usar as seqüências de controle em seu .bashrc ou algo semelhante. Como:
if [ "${-//[!i]/}" = 'i' ]; then
case $HOSTNAME in
server1) echo -e '\e]11;darkgray\a\e]10;black\a' ;;
server2) echo -e '\e]11;darkblue\a\e]10;gray\a' ;;
esac
fi
Outros emuladores de terminal têm características semelhantes.
No Putty, você pode configurar a cor diretamente, não tendo certeza se essas sequências de controle do XTerm funcionarão (elas não foram feitas em testes superficiais, no entanto, não olhei minhas configurações).
O motivo para verificar o sinalizador interativo do shell em vez de ser um terminal (isto é, status de saída de tty
ou [ -t 1 ]
) é, em alguns casos (por exemplo, Ansible), um tty pode ser alocado ( ssh -tt
) para processamento em lote e saída para stdout em tal circunstância pode tornar o fluxo não "limpo", o que pode causar problemas (por exemplo, Ansible).
Nota: Eu testei [ "${-//[!i]/}" = 'i' ]
para as versões do bash, mksh, zsh e ksh disponíveis para o Centos 7, e funcionou em todas elas.