Как изменить значение TERM по умолчанию, установленное при входе в консоль (Ubuntu)?

14475
cmcginty

Значение оболочки $ TERM в Ubuntu по умолчанию равно "xterm" для входа в консоль. Как я могу изменить его, чтобы он по умолчанию был "xterm-color"? Я спрашиваю, потому что, похоже, это самый простой способ включить цветную подсказку.

Я знаю, что вы можете сбросить значение TERM в .bashrc или другом сценарии входа, но я бы предпочел просто принудительно установить значение TERM в более разумное значение по умолчанию.

6
Извините, возможно, мне нужно это проверить. Возможно, это был SSH-вход, а не консоль. Любые указатели были бы хорошими. cmcginty 14 лет назад 0

2 ответа на вопрос

9
quack quixote

В TERM переменная хранит имя записи в Terminfo базе данных, которая помогает ОС определить, как отображать информацию к терминалу. То, что он по умолчанию, полностью зависит от того, как вы вошли в систему.


Обычно «консоль» означает, что вы физически находитесь за компьютером и входите в один из текстовых виртуальных терминалов (VT1-6).

  • TERM по умолчанию - linux (может отличаться в разных дистрибутивах; vt100 - безопасная альтернатива)

    • Чтобы изменить это, в Ubuntu 9.10 вам нужно настроить команду getty, определенную в /etc/init/tty1.conf . Это изменит настройку для / dev / tty1 (VT1), и вам потребуется внести те же изменения в /etc/init/tty2.conf, ..tty3.conf и т. Д., Чтобы получить и другие виртуальные терминалы.

      # original getty command in /etc/init/tty1.conf exec /sbin/getty -8 38400 tty1  # new command; sets default TERM on /dev/tty1 to "foobar" exec /sbin/getty -8 38400 tty1 foobar 

Если вы вошли в X / Gnome / KDE (VT7, 8 или 9), вы не используете консоль, по крайней мере, в этом контексте. Технически это вход в X и использование псевдотерминала через приложение эмулятора терминала - это то, что дает вам окно, которое показывает вашу оболочку и командную строку.

  • TERM изначально устанавливается вашим эмулятором терминала. Его можно изменить в файлах запуска вашей оболочки ( ~ / .bashrc, ~ / .profile и т. Д.).

    • xterm, rxvt, xterm-color, xterm-256color - все это общие значения

    • Чтобы изменить это значение, обратитесь к документации для вашего эмулятора терминала. Например, если вы используете rxvt-unicode (он же urxvt ), вы должны использовать параметр -tn termnameкомандной строки.


Если вы вошли в систему удаленно (через SSH или удаленный X), вы определенно не используете консоль ни в каком контексте; Опять же, вы используете псевдо-терминал .

  • TERM наследуется программой, которая запустила SSH:
    • SSH из Linux - результатов виртуального терминала в удаленном TERM в Linux ;
    • SSH из командной строки в эмуляторе терминала X-windows приводит к удаленному TERM любого значения TERM, установленного до команды SSH;
    • SSH из системы Windows, использующей PuTTY, по умолчанию равен xterm, но это можно изменить в конфигурации PuTTY;
    • и любые из приведенных выше настроек могут быть переопределены файлами запуска оболочки удаленного пользователя.
2
cmcginty

Много полезной информации здесь:

man 7 term 

Значение TERM по умолчанию будет устанавливаться для каждой строки с помощью / etc / inittab (Linux и System-V-подобные UNIX) или / etc / ttys (BSD UNIX). Это почти всегда будет достаточно для рабочих станций и микрокомпьютерных консолей.

Следующая проблема заключается в том, что Ubuntu 9.10 не имеет /etc/inittabили /etc/ttys.

man inittab 

Upstart init (8) демон не использует этот файл, а вместо этого считывает свою конфигурацию из файлов в / etc / init. Смотрите init (5) для более подробной информации.

Заглянув в / etc / init, вы можете найти файлы tty * .conf. Они управляются exec'ing getty. Итак, тогда:

man getty 

термин Значение, которое будет использоваться для переменной среды TERM. Это переопределяет то, что init (8) могло установить, и наследуется логином и оболочкой.

Это хорошая информация. Теперь мы знаем, что значение TERM по умолчанию исходит от init (8)

... после всего этого мне не удалось выяснить, как изменить значение TERM по умолчанию, используемое init.

эта цитата man-страницы описывает настройку TERM при входе в «консоль»; Ubuntu использует * upstart * вместо старого * init * и определяет * tty1 * и т. Д. В таких файлах, как * / etc / init / tty1.conf * quack quixote 14 лет назад 1

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