Мой сценарий удара работает дополнительный шумный, когда выполнено в сервере через ssh.
+ sudo apt-get install -yqq nodejs
debconf: unable to initialize frontend: Dialog
debconf: (Dialog frontend will not work on a dumb terminal, an emacs shell buffer, or without a controlling terminal.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Teletype
dpkg-preconfigure: unable to re-open stdin:
Одно из предложения, которое я видел отправленный там, делало TERM=linux экспорта
Есть ли какое-либо влияние стороны? Это хорошая идея сделать в начале сценария, как это:
#!/bin/bash
set -e
set -x
TERM=linux
Эти export TERM=linux
наборы команд эмулятор терминала к linux
. В зависимости от среды и возможности консоли Вы используете, некоторые эмуляции будут работать лучше, чем другие.
значение по умолчанию установка TERM для Ubuntu xterm
. Можно проверить установку TERM путем выполнения echo $TERM
.
Вам, вероятно, придется согласовать с поставщиком приложения, которое Вы запускаете для обнаружения лучше всего рекомендуемого эмулятора терминала для их программы. Большая часть приложения будет ожидать, что Вам уже установили эмулятор на что-то совместимое такой как xterm
или linux
.
-x набора
настройка отладки А:
Вы обращаетесь к шумному сценарию. Вы получаете подробный вывод из своего сценария из-за set -x
настройки, которые используются для отладки. После того как Вы видите то, что происходит, и имейте свой сценарий, выполняющий способ, которым Вы хотите его, Вы могли прокомментировать set -x
строка путем размещения #
символ перед ним.
-e
набора Эта установка говорит сценарию выходить на ошибке команды. Например, если бы Ваша команда должна была изменить каталог ни на один существующий каталог или перечислять несуществующий файл, то сценарий завершился бы на ошибке, вместо того, чтобы продолжиться к следующей строке.
Ваша проблема с ssh
через сервер, в который Вы входите, может привести к этому, по умолчанию сервер пытается соответствовать эмулятору терминала настроек от компьютера, от которого Вы входите в систему. Если это не имеет соответствия, это не знает, какие настройки можно обработать. Для этого необходимо будет использовать эти export TERM
команда для определения к серверу, как общаться с Вами.
Нет никакого смысла к установке TERM
, если TTY не выделяется. При использовании SSH используйте ssh -t
:
-t Force pseudo-tty allocation. This can be used to execute
arbitrary screen-based programs on a remote machine, which can be
very useful, e.g. when implementing menu services. Multiple -t
options force tty allocation, even if ssh has no local tty.
Примечание эти ошибки:
debconf: (Dialog frontend will not work on a dumb terminal, an emacs shell buffer, or without a controlling terminal.) ... debconf: (This frontend requires a controlling tty.)
Согласно странице GNU gettext руководства , TERM
переменная "... содержит идентификатор для текста window’s возможности". Другими словами, это просто говорит систему, какой терминал Вы, предположительно, используете и как текст на экране должен быть адаптирован.
TERM=linux
средства, что Вы, предположительно, собираетесь быть консолью Linux использования, таким образом, вывод будет минималистическим, не могли бы иметь поддержки некоторых языков.
Как muru указанный, действительно необходимо было выделить псевдо tty. Изменение TERM
переменная могла бы помочь, но TERM=linux
не то, что Вы хотите. Вы не используете фактическую консоль Linux. -t
опция для ssh была бы лучшим подходом.