2

я пытаюсь запустить скрипт bash на удаленной машине. Если я открываю ssh-соединение в терминале, я могу легко запустить скрипт. Но когда я запускаю это так:

ssh user @ ip </etc/script

Я получаю сообщение об ошибке:

Переменная TERM окружающей среды не установлена.

Что я здесь не так делаю?

3 ответа3

4

Использование ssh -t может решить вашу проблему, так как он подключает tty и устанавливает подходящую переменную окружения TERM.

ssh -t host < script

0

Когда вы перенаправляете ввод, ssh-клиент, вероятно, понимает, что ввод не подключен к TTY, и поэтому решает, что TERM не подходит.

0

Поэкспериментируйте с размещением этих строк в ~user/.bashrc на хосте назначения:

if [ ! ${#TERM} > 0 ]
then
    export TERM=<value>
fi

$ {# var } возвращает длину строки переменной var. Таким образом, если длина TERM равна NULL (не установлена) или 0, вы можете вручную установить значение TERM .

Вы также можете подумать о том, чтобы проверить, являются ли $SSH_CLIENT или $SSH_CONNECTION ненулевыми, и проверять только значение TERM в этих условиях.

Наконец, это нужно сделать в .bashrc потому что .bash_login только на оболочках входа в систему.

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