tmux verificar interferindo no uso do scp

2

Meu arquivo .bashrc no meu servidor é relativamente simples, mas ele tem esse pedaço para garantir que ele se conecte automaticamente ao tmux no login:

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

Isso geralmente funciona bem, mas quando eu tento scp para este servidor não funciona. Eu vejo a mensagem "Checando por tmux" no meu terminal local quando eu scp seguido por "sem sessões, não um terminal". Para corrigir isso, tentei alterar o teste acima para

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

Isso elimina o erro "sem sessões; não um terminal", mas os arquivos não copiam silenciosamente. A cópia funciona bem se eu comentar o texto acima, então, claramente, o problema é com isso, mas não sei por que isso afetaria qualquer coisa se ele simplesmente falha no teste acima. O que está acontecendo?

    
por Vyas 03.03.2016 / 17:12

1 resposta

2

Você não deve imprimir nada em shells não interativos. Código típico cortado para .bashrc é:

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

no começo, que pula todo o arquivo para shells não interativos.

Você deve usar essa verificação na frente do echo , como:

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

porque o texto echo ed quebrará o protocolo scp .

    
por 03.03.2016 / 17:39

Tags