Установка переменной TERM

Установка переменной TERM

Прав ли я, что установка типа терминала в записи inittab, например, c2:... tty2 linux-m, является лишь своего рода информативной задачей — устанавливает переменную TERM для информирования команд/программ/приложений о том, какой тип терминала на самом деле является системой. То есть, даже если TERM описывает терминал как монохромный, но терминал действительно способен отображать цвета, когда команда, например, ls --color=alwaysотправляет свой вывод на терминал i, отображает цвета, даже если он определен как нецветной в inittab?

решение1

TERM действительно информативен, но многие программы/команды будут его учитывать или полагаться на него.

То, как создается цвет, может сильно зависеть от типа терминала. На практике я подозреваю, что все они используют ANSI (или надмножество), где поддерживается цвет.

Если TERM установлен на тип монотерминала, программа должна будет использовать некоторую другую информацию, чтобы решить, какой тип управления цветом терминала использовать. Если по умолчанию установлено "ANSI", то, скорее всего, это будет работать в большинстве случаев в наши дни.

Это было бы плохой идеей, если бы терминал был действительно монохромным. Было бы лучше, если бы команда/программа использовала монометоды (например, инверсию, подчеркивание, интенсивность, зачеркивание, мигание и т. д.) вместо цвета, чтобы визуально различать элементы.

Если конкретная программа/команда учитывает TERM (как делают многие), она с равной вероятностью сообщит вам, что ваш запрос цвета не поддерживается типом терминала.

Видетьhttp://tldp.org/HOWTO/NCURSES-Programming-HOWTO/color.html

if(has_colors() == FALSE)
    {   endwin();
        printf("Your terminal does not support color\n");
        exit(1);
    }

Я не проверял исходный код ncurses, чтобы увидеть, как has_colors()он реализован, и не знаю, какая доля (если таковая имеется) программ/команд следует указанному выше шаблону.

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

TERM=xterm-mono robotfindskitten

(mono display)

С другой стороны, lsзнает, когда я вру.

Связанный контент