Parece não haver nada específico para tcsh
em seu script, então apenas contorne-o. Exemplo:
ssh -T user@server "/bin/bash -ec 'cd cs4400/$dest ; gcc -o $efile $file ; ./$efile'"
Eu tenho um pequeno script simples, que compila um arquivo .c
e o executa em um servidor remoto rodando tcsh
e depois devolve o controle para minha máquina (isso é para a escola, eu preciso que meus programas funcionem corretamente nos computadores do laboratório, mas quero editá-los, etc. na minha máquina). Ele executa comandos desta maneira:
ssh -T user@server << EOF
cd cs4400/$dest
gcc -o $efile $file
./$efile
EOF
Até agora, tudo funciona bem, mas esse alerta sempre é feito:
Warning: no access to tty (Bad file descriptor).
Thus no job control in this shell.
Eu sei que isso tecnicamente não é um problema, mas é SUPER chato. Eu estou tentando fazer o trabalho da escola, verificando a saída do meu programa etc., e isso desordena tudo, e eu odeio isso.
Estou executando esta versão do ssh na minha máquina:
OpenSSH_6.1p1 Debian-4, OpenSSL 1.0.1c 10 May 2012
Esta versão do tcsh no servidor:
tcsh 6.17.00 (Astron) 2009-07-10 (x86_64-unknown-linux)
E esta versão do ssh no servidor:
OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
Parece não haver nada específico para tcsh
em seu script, então apenas contorne-o. Exemplo:
ssh -T user@server "/bin/bash -ec 'cd cs4400/$dest ; gcc -o $efile $file ; ./$efile'"
A opção -T
ssh está desativando o encaminhamento das variáveis de ambiente locais. Assim, sua variável TERM é ausente ou indefinida, caso em que o ssh não pode atribuir um pseudo-terminal (pty) adequado, o que geralmente significa que você não pode usar comandos de conclusão de linha de comando e de linha de comando, etc. Você pode tentar remediar a situação com:
TERM=vt100 ssh -T user@server ...
Verifique também suas variáveis de envronmento com: set
e set -o
.