Никакое значение за $TERM и никакой-T не указаны

Я недавно обновил (с apt-get dist-upgrade) мои поля Kubuntu и Lubuntu Linux, и теперь каждый раз, когда я вхожу в одну из этих машин, я получаю это сообщение:

tput: No value for $TERM and no -T specified

Вот снимок экрана точного сообщения: tput: No value for $TERM and no -T specified

Это произошло и на моей машине Lubuntu и на машине Kubuntu, и это не была проблема, пока я не обновил; таким образом, я подозреваю, что это не была пользовательская ошибка.

Как я могу зафиксировать это?

ОБНОВЛЕНИЕ

Я разыскал это в свой .bashrc файл, который становится названным моим .profile файлом. Хотя, то, что мой .bashrc файл теперь работает, когда я делаю вход в систему GUI, тогда как он не сделал, прежде чем я обновил, является немного странным. И не, я недавно не изменил свой .bashrc файл или свой .profile. Кроме того, удар не является моей оболочкой по умолчанию.

Проблема состоит в том, что я звоню tput в моем .bashrc файле для установки переменных для использования в добавляющем цвете к подсказке. Но в (несоответствующее) время, когда мой .bashrc файл теперь выполняется, $TERM не установлен.

fgRed=$(tput setaf 1)     ; fgGreen=$(tput setaf 2)  ; fgBlue=$(tput setaf 4)
fgMagenta=$(tput setaf 5) ; fgYellow=$(tput setaf 3) ; fgCyan=$(tput setaf 6)
fgWhite=$(tput setaf 7)   ; fgBlack=$(tput setaf 0)
bgRed=$(tput setab 1)     ; bgGreen=$(tput setab 2)  ; bgBlue=$(tput setab 4)
bgMagenta=$(tput setab 5) ; bgYellow=$(tput setab 3) ; bgCyan=$(tput setab 6)
bgWhite=$(tput setab 7)   ; bgBlack=$(tput setab 0)

Обновленный вопрос: Как я должен зафиксировать это? Если я установил $TERM самостоятельно? Или если я просто не устанавливаю эти переменные если $TERM не установлен?

ОБНОВЛЕНИЕ 2

Одно решение, которое я попробовал, состояло в том, чтобы проверить ли $TERM был установлен. Но это, казалось, не работало; я все еще получил то же сообщение об ошибке. Вот код:

if [ ! "$TERM" = "" ]; then
  #Do stuff here
fi

Так, по-видимому, $TERM был установлен, но tput все еще завершенный это не было.

21
задан 4 March 2015 в 15:44

6 ответов

То, что в конечном счете работало на меня, должно было проверить, была ли оболочка интерактивной оболочкой. Я основывал решение на этом другом сообщении в unix.stackexchange: , Как проверить, является ли оболочка входом в систему/интерактивным/пакетом .

, Таким образом, код для решения был:

if [[ $- == *i* ]]; then
  fgRed=$(tput setaf 1)     ; fgGreen=$(tput setaf 2)  ; fgBlue=$(tput setaf 4)
  fgMagenta=$(tput setaf 5) ; fgYellow=$(tput setaf 3) ; fgCyan=$(tput setaf 6)
  fgWhite=$(tput setaf 7)   ; fgBlack=$(tput setaf 0)
  bgRed=$(tput setab 1)     ; bgGreen=$(tput setab 2)  ; bgBlue=$(tput setab 4)
  bgMagenta=$(tput setab 5) ; bgYellow=$(tput setab 3) ; bgCyan=$(tput setab 6)
  bgWhite=$(tput setab 7)   ; bgBlack=$(tput setab 0)
fi
13
ответ дан 23 November 2019 в 01:42

Если Вы сделаете это

if tty -s
then
    : # your tput commands
fi

, то Это решит Вашу проблему. Без-s опции tty или отобразит Ваш tty или запишет "не tty"

9
ответ дан 23 November 2019 в 01:42

Для меня, добавляя

export TERM=xterm

к /etc/profile была единственная вещь, которая решила проблему. На самом деле ошибка дала нам подсказку: No value for $TERM

6
ответ дан 23 November 2019 в 01:42

Попробуйте вводный терминал (не имеет значения, который, даже tty1 сделает), и выполните эту строку

sudo update-alternatives --config x-terminal-emulator

, Вам подарят выбор эмулятора терминала по умолчанию для X-окна. Выберите один путем выбора числа и перезагрузки после того, как Вы будете сделаны.

$ sudo альтернативы обновления - конфигурируют x-эмулятор-терминала
существует 6 вариантов для альтернативного x-эмулятора-терминала (обеспечение/usr/bin/x-terminal-emulator).

  Selection    Path                             Priority   Status
------------------------------------------------------------
  0            /usr/bin/gnome-terminal.wrapper   40        auto mode
  1            /usr/bin/gnome-terminal.wrapper   40        manual mode
  2            /usr/bin/koi8rxterm               20        manual mode
* 3            /usr/bin/lxterm                   30        manual mode
  4            /usr/bin/sakura                   40        manual mode
  5            /usr/bin/uxterm                   20        manual mode
  6            /usr/bin/xterm                    20        manual mode

Press enter to keep the current choice[*], or type selection number:  
3
ответ дан 23 November 2019 в 01:42

[ Другой сценарий, но поисковая система приводит меня сюда сначала]

Когда" tput: Никакое значение за $TERM и никакой-T, указанный " ошибка, не происходят в Докер контейнер (для меня, при открытии , оболочка zsh, звоня docker exec -it <container> zsh (-i для интерактивного)) единственный способ зафиксировать это, должен был установить переменную как ENV TERM xterm-256color в Dockerfile для этого изображения.

Подходы как RUN export TERM=xterm-256color или RUN echo "export TERM=xterm-256color" >> ~/.zshrc не были успешны. Другие значения для ТЕРМИНА также возможны.

4
ответ дан 23 November 2019 в 01:42

Ошибочное диалоговое окно происходит из-за фиксации ошибка № 678421 , таким образом, это - мой отказ.;) Это говорит Вам об ошибках из-за некоторой команды (команд) в одном из Ваших конфигурационных файлов. Если Вы прокручиваете к вершине, Вы видите, какой файл вызывает сообщения об ошибках.

Возможно ответ Serg достаточен для избавлений от диалогового окна предупреждения.

Редактирование:

хотел бы добавить несколько вещей из-за обновленного вопроса.

, В отличие от этого, прежде, /usr/sbin/lightdm-session теперь выполняется под ударом (ранее sh). Вот почему его определение источника ~/.profile результаты в ~/.profile определение источника ~/.bashrc. Возможно это означает, что содержание по умолчанию ~/.profile должно быть изменено.

самая легкая вещь можно сделать для фиксации его, как Вы предположили, чтобы только назвать tput, если $TERM установлен.

1
ответ дан 23 November 2019 в 01:42

Другие вопросы по тегам:

Похожие вопросы: