Как устанавливается значение переменной оболочки TERM по умолчанию?
13
После обновления до Maverick моя переменная TERM была установлена на 'dumb', этого не происходит с тем же домашним каталогом, запущенным из Lucid, и я ничего не изменил вручную, связанный с TERM.
Любая идея, откуда переменная TERM ожидается установить?
Чтобы пояснить, что говорит Жиль, предположим, что вы дистанционно подключаетесь к 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).
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-браузер
Чтобы ответить на ваш вопрос буквально, эмулятор терминала предполагается набор
$TERM
.¹Для решения вашей проблемы потребуется хотя бы знание того, какой эмулятор терминала вы используете. Это может быть ошибка или расконфигурация в эмуляторе терминала или проблемы с вашей Стартовые файлы оболочки (вероятно
~/.bashrc
, но , возможно~/.bash_profile
,/etc/bashrc
,/etc/profile
, ...).¹ Предполагая, что вы не используете аппаратный терминал; тогда это будет аргумент
getty
, вызываемый изinittab
(более старые выпуски, использующие SysVinit) или/etc/init/tty*.conf
(Ubuntu ≥9.10, использующий Upstart).источник
Если вы хотите изменить терминал, убедитесь, что вы проверяете функциональность альтернатив обновления.
Например:
Многие из различных системных параметров по умолчанию в Ubuntu устанавливаются с помощью этого метода. Еще одним распространенным вариантом будет www-браузер
источник