Как устанавливается значение переменной оболочки TERM по умолчанию?


13

После обновления до Maverick моя переменная TERM была установлена ​​на 'dumb', этого не происходит с тем же домашним каталогом, запущенным из Lucid, и я ничего не изменил вручную, связанный с TERM.

Любая идея, откуда переменная TERM ожидается установить?

Ответы:


13

Чтобы пояснить, что говорит Жиль, предположим, что вы дистанционно подключаетесь к Ubuntu из Windows с помощью Putty.

В опциях конфигурации putty, в Connection-> Data есть настройка, называемая строка типа терминала. Вы можете установить там свой TERM, а putty указывает SSH установить эту переменную среды. В какой-то момент после этого ваша оболочка будет выполнена, вероятно, / bin / bash, и она получит свое окружение от своего родительского процесса, возможно, процесса sshd.

То же самое верно, если вы используете ssh из удаленного Linux-бокса, просто локальная переменная среды TERM передается через ssh в удаленное соединение.

В случае эмулятора терминала задача эмулятора терминала - установить переменную среды TERM. Например, getty устанавливает TERM в значение «linux» и разветвляет процесс оболочки (/ bin / bash). или gnome-терминал устанавливает TERM в значение "xterm" и разветвляет процесс оболочки.


Я проверил, и gnome-терминал работает нормально, это действительно ошибка "эмулятора". Я использую терминатор. Спасибо
Жоау Пинту

9

Чтобы ответить на ваш вопрос буквально, эмулятор терминала предполагается набор $TERM

Для решения вашей проблемы потребуется хотя бы знание того, какой эмулятор терминала вы используете. Это может быть ошибка или расконфигурация в эмуляторе терминала или проблемы с вашей Стартовые файлы оболочки (вероятно ~/.bashrc, но , возможно ~/.bash_profile, /etc/bashrc, /etc/profile, ...).

¹ Предполагая, что вы не используете аппаратный терминал; тогда это будет аргумент getty, вызываемый из inittab(более старые выпуски, использующие SysVinit) или /etc/init/tty*.conf(Ubuntu ≥9.10, использующий Upstart).


2
getty не вызывается из inittab, Ubuntu больше не имеет inittab! Консоли определены в /etc/init/tty*.conf
LassePoulsen

4
Я думаю, что вы получите значок для первого использования, которое я видел сносок в ответе :-)
poolie

теперь, когда он вылет 15.04+ больше не является значением по умолчанию (снова) и systemd обрабатывает его в сервисе getty @, я все еще привыкаю к ​​этому изменению (он полагает, что как только я узнал все о выскочках вверх и вниз, теперь у меня есть сделать то же самое с systemd ... meh !!)
osirisgothra

1

Если вы хотите изменить терминал, убедитесь, что вы проверяете функциональность альтернатив обновления.

Например:

update-alternatives --config x-terminal-emulator

Многие из различных системных параметров по умолчанию в Ubuntu устанавливаются с помощью этого метода. Еще одним распространенным вариантом будет www-браузер

update-alternatives --config x-www-browser
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.