tmux проверяет, вмешивается ли использование scp

Мой .bashrc-файл на моем сервере относительно прост, но у него есть этот кусок, чтобы он автоматически подключался к tmux при входе в систему:

echo Checking for tmux if [ -z ${TMUX} ] then /usr/bin/tmux attach || /usr/bin/tmux fi 

Обычно это нормально работает, но когда я пытаюсь запустить scp на этот сервер, он не работает. Я вижу сообщение «Проверка на tmux» на моем локальном терминале, когда я просматриваю scp, а затем «no sessions, а не терминал». Чтобы исправить это, я попытался изменить тест выше, чтобы

 if [ -z ${TMUX} ] && [ -t 0 ] 

Это избавляет от ошибки «без сеансов, а не от терминала», но файлы просто молча копируют. Копия работает отлично, если я полностью прокомментирую вышеизложенное, поэтому проблема заключается в этом, но я не уверен, почему это повлияет на что-либо, если он просто не справится с вышеуказанным тестом. Что происходит?

Вы не должны ничего печатать в неинтерактивных оболочках. Типичный код, сжатый для .bashrc :

 [[ $- != *i* ]] && return 

в начале, который пропускает весь файл для неинтерактивных оболочек.

Вы должны использовать эту проверку перед echo , например:

 [ -t 0 ] && return echo Checking for tmux 

потому что текст echo будет разорвать протокол scp .