Os comandos tput
são avaliados no momento em que a atribuição ao PS1 é feita. Como os arquivos de inicialização são processados quando uma sessão ssh é iniciada, a atribuição é feita mesmo que sua sessão não seja interativa. Você pode testar isso e fazer sua tarefa apenas quando estiver iniciando uma sessão interativa.
if [[ $- =~ i ]]
then
# set PS1 using tput
else
# set a plain PS1 (or use hard-coded escape sequences)
fi