У меня есть короткий простой сценарий, который компилирует файл .c и запускает его на удаленном сервере с запущенным tcsh а затем просто возвращает управление моей машине (это для школы, мне нужны мои программы для правильной работы на компьютерах лаборатории, но я хочу редактировать их и т. д. на моей машине). Он запускает команды следующим образом:

ssh -T user@server << EOF
cd cs4400/$dest
gcc -o $efile $file
./$efile
EOF

Пока он работает нормально, но выдает это предупреждение каждый раз, когда я делаю это:

Warning: no access to tty (Bad file descriptor).
Thus no job control in this shell.

Я знаю, что технически это не проблема, но это СУПЕР раздражает. Я пытаюсь выполнять школьную работу, проверяю результаты своей программы и т.д., И это все загромождает, и я ненавижу это.

Я использую эту версию ssh на моей машине:

OpenSSH_6.1p1 Debian-4, OpenSSL 1.0.1c 10 May 2012

Эта версия tcsh на сервере:

tcsh 6.17.00 (Astron) 2009-07-10 (x86_64-unknown-linux)

И эта версия SSH на сервере:

OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010

2 ответа2

0

Кажется, в вашем скрипте нет ничего специфичного для tcsh , так что просто обойдите его. Пример:

ssh -T user@server "/bin/bash -ec 'cd cs4400/$dest ; gcc -o $efile $file ; ./$efile'"
0

Опция -T ssh отключает пересылку локальных переменных среды. Таким образом, ваша переменная TERM либо отсутствует, либо не определена, и в этом случае ssh не может назначить правильный псевдотерминал (pty), что обычно означает, что вы не можете использовать элементы управления завершением командной строки и редактирования командной строки и т.д. Вы можете попытаться исправить ситуацию. с помощью: TERM=vt100 ssh -T user@server ...

Также проверьте переменные окружения с помощью: set и set -o .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .