tput
команды оценены в то время, когда присвоение на PS1 сделано. Так как файлы запуска обрабатываются, когда ssh сессия запускается, присвоение сделано даже при том, что Ваша сессия не интерактивная. Можно протестировать на это и только сделать присвоение при фактическом запуске интерактивной сессии.
if [[ $- =~ i ]]
then
# set PS1 using tput
else
# set a plain PS1 (or use hard-coded escape sequences)
fi
Поместите следующее в начале/etc/bashrc
[ -z "$PS1" ] && return
Существует удар встроенный тест для TTY. Я забываю, когда это было добавлено, 3.0? Я полагаю, что это является относительно новым. Я использую его в сценариях, где мне нужно другое поведение, когда это выполняется от крона, или пользователь выполняет его непосредственно.
if [ -t 0 ]; then
echo "I'm a TTY"
fi
Вот описание всех 3 методов выполнения этого:
http://tldp.org/LDP/abs/html/intandnonint.html