Подходит значения переменных TERM для последовательной консоли

Чтобы включить последовательную консоль в Linux, используется getty (чаще всего его вариант agetty ). Этот двоичный файл принимает в качестве аргумента, среди прочего, значение для инициализации переменной TERM .

В Debian с Sys V init значением по умолчанию было vt100 . При использовании systemd значением по умолчанию был vt102 , а сейчас vt220 .

Немного поиграв с виртуальными машинами QEMU и virt-viewer , а также с командой virsh console , я заметил некоторые вещи:

  • С vt100 ls --color отображает цвета, но подсветка синтаксиса vim не работает
  • с vt102 или vt220 , ни один из них не отображает цвета
  • Только с переменной TERM, установленной на linux , используйте цвета ls и vim

Поэтому я предполагаю, что независимо от фактической «поддержки цвета» каждое приложение смотрит на переменную TERM и действует соответственно, что объясняет различия, отмеченные выше.

После прочтения HOWTO по Serial Console я понимаю, что значение переменной TERM должно зависеть от фактической модели физического терминала, который будет подключен к последовательному порту, в соответствии с его возможностями.

Обратите внимание, что, согласно блогу Леннарта Поеттеринга , TERM должен быть установлен на Linux только с реальными виртуальными терминалами (в отличие от последовательных). С другой стороны, вики Arch Linux , похоже, не возражают (см. Строки /etc/inittab он предлагает).

Итак, мои вопросы:

В общем случае, что произойдет, если для переменной TERM будет установлено значение linux на консоли, подключенной к менее способному терминалу, например DEC VT100, VT102 или VT220, или к некоторым программным эмуляторам терминала RS-232, таким как minicom или termite ?

Более реалистично (в моем конкретном случае), нормально ли устанавливать переменную TERM в linux на «виртуальной» последовательной консоли на виртуальной машине QEMU, к которой я буду подключаться через virt-viewer или virsh console ?

Параметр TERM сообщает прикладной программе, какие возможности имеет терминал, с которым он взаимодействует, и как использовать эти возможности (обычно через библиотеку, такую ​​как ncurses). Простым английским языком: он сообщает, какие управляющие последовательности (escape-последовательности) следует отправлять для перемещения курсора по экрану, для изменения цвета текста, как стереть область экрана, какие последовательности передают функциональные клавиши и т. Д. Некоторые из эти возможности могут отсутствовать, например, поддержка цвета.

Большинство используемых сегодня типов терминалов так или иначе связаны с «дедушкой» из «glass ttys», DEC VT100. Вот почему типы терминалов в основном взаимозаменяемы, поэтому установка неправильного типа типично приводит к в основном рабочей настройке, но с некоторыми сбоями.

Итак, чтобы ответить на вопросы «что я должен использовать» и «что произойдет, если я использую неправильные настройки»? Некоторые управляющие последовательности могут не совпадать, т. Е. Программа отправляет последовательности перемещения курсора, которые отличаются от ожидаемых эмулятором терминала. Или отсутствует поддержка цвета. (Между прочим, оригинальный VT100 определенно не поддерживал цвет …) В документации к эмулятору терминала должны быть указаны правильные настройки, но при экспериментировании не будет никакого вреда, чтобы увидеть, какие настройки работают лучше всего. Можно использовать «linux», если он работает для вас.