В случае, если простой return
не справляется с работой, вот еще один подход, взятый из этой статьи блога :
if `tty -s`; then
mesg n
fi
tty -s
проверяет, есть липрикрепленный TTY (-s
говорит ему сделать это молча и просто завершиться с соответствующим кодом возврата)tty
возвращает вложенный tty (например, "/ dev / pts / 1").Это должно быть безопаснее, чем проверка некоторой переменной оболочки;) mesg
контролирует доступ на запись к вашему терминалу (msg n
запрещает запись в (в нашем случае несуществующий) терминал) и, следовательно, требует одногоприсутствовать.
В некоторых системах (в моем случае это Debian Jessie, но есть и отчеты об Ubuntu) mesg n
1 устанавливается безоговорочнов ~/.bashrc
или ~/.profile
.Поэтому, если так и существует, это может быть виновником.
Как и в других примерах, вы, конечно, можете сделать это однострочным: [[ $(tty -s ) ]] && mesg n
.И никто не мешает вам объединить их:
if [[ $(tty -s ) ]]; then
mesg n
else
return
fi
Кстати: согласно связанной статье, этот фрагмент должен идти к .bashrc
машины, которую вы подключаете к ("remote ") - так что если это johndoe@somehost
, это должно быть применено в начале /home/johndoe/.bashrc
на somehost
.В моем случае я избавился от сообщения только после того, как применил это изменение к «вызывающему хосту».
PS: Также проверьте .profile
, если оно имеет отдельную команду msg n
(это было в моем случае).Если это так, оберните его там.
1: mesg n
используется, чтобы запретить другим пользователям на машине выполнять запись в ваше текущее оконечное устройство, что само по себеэто хорошо, но не полезно для какой-то rsync
работы;)