Нет значения для $ TERM и не указано -T

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

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

Вот скриншот точного сообщения:

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

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

каждый раз

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

Проблема заключается в том, что я вызываю 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 не задан?

Обновленный вопрос:

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

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

Так что, видимо, $TERM был установлен, но tput все еще заключил, что это не так.

1
задан 5 March 2015 в 02:44

5 ответов

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

if tty -s
then
    : # your tput commands
fi

, это устранит вашу проблему. Без опции -s tty либо отобразит ваш tty, либо напишет «not tty»

4
ответ дан 23 May 2018 в 22:46

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

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

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

$ sudo update-alternatives --config x-terminal-emulator Существует 6 вариантов альтернативного эмулятора x-terminal (предоставление / 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:  
2
ответ дан 23 May 2018 в 22:46
  • 1
    Когда я пытаюсь это сделать, он говорит мне: «В группе ссылок x-terminal-emulator существует только одна альтернатива [...]« Ничего не нужно настраивать ». Это на моей машине Kubuntu. – Sildoreth 5 March 2015 в 00:38
  • 2
    Попробуйте установить другой эмулятор терминала, например gnome-terminal или sakura – Sergiy Kolodyazhnyy 5 March 2015 в 00:41
  • 3
    У меня была точно такая же проблема. Я выбрал sakura. Однако это, похоже, проблема с оболочкой терминала gnome; если да, почему бы не исправить это? – jjmerelo 14 March 2015 в 12:39
  • 4
    На самом деле это не проблема. – jjmerelo 14 March 2015 в 20:58
  • 5
    @jjmerelo Как позже выяснил OP в своем ответе, у него были строки в его файле .bashrc, который выдавал ошибку. Терминальная оболочка Gnome не должна быть проблемой. Первоначально я предполагал, что переменная $ TERM не была установлена, это был другой пользователь, Gunnar, упомянутый в его ответе. – Sergiy Kolodyazhnyy 15 March 2015 в 01:47

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

export TERM=xterm

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

2
ответ дан 23 May 2018 в 22:46

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

Когда « В другом сценарии, но поисковая система сначала меня сюда] « Ошибка в контейнере Docker ( для меня при открытии оболочки zsh, вызывающей docker exec -it <container> zsh (-i для интерактивного)), единственный способ исправить это - это установить переменную типа ENV TERM xterm-256color в файле Docker для этого изображения.

Подходы, такие как RUN export TERM=xterm-256color или RUN echo "export TERM=xterm-256color" >> ~/.zshrc, не были успешными. Возможны и другие значения для TERM.

2
ответ дан 23 May 2018 в 22:46

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

Возможно, ответа Серга достаточно, чтобы избавиться от диалогового окна предупреждения.

Изменить: [!d3 ]

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

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

Самое простое, что вы можете сделать, чтобы исправить это, как вы сказали, только для вызова tput, если задано $ TERM.

1
ответ дан 23 May 2018 в 22:46
  • 1
    Я попытался проверить, был ли установлен параметр $ TERM, но он, похоже, не работает. – Sildoreth 5 March 2015 в 01:01
  • 2
    @Sildoreth: Не могли бы вы показать нам точный код для этого? (Пожалуйста, измените свой вопрос еще раз.) – Gunnar Hjalmarsson 5 March 2015 в 01:05
  • 3
    добавлен к вопросу – Sildoreth 5 March 2015 в 01:09
  • 4
    @Sildoreth: Видел это. Возможно, это потому, что tput вызывается в подпроцессах. (Просто догадаться.) Во всяком случае, вы нашли хороший способ справиться с этим. – Gunnar Hjalmarsson 5 March 2015 в 01:14

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

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