Правильно ли устанавливать переменную $ TERM вручную?

10

Я установил $TERMпеременную, добавив строку XTerm*termName: xterm-256colorв мой .Xresourcesфайл. Когда я делал это, я не знал, что именно это означает (я следовал онлайн-руководству, чтобы изменить внешний вид xterm), но теперь я прочитал немного больше и беспокоюсь, что я сделал неправильно. В частности, я хочу знать, что есть что-то плохое в настройке $TERMпеременной вручную, и если это так, как я могу исправить свою ошибку.

В случае, если вам нужно, я запускаю Fedora 20 с xterm.

Santaru72
источник
Это общий вопрос программирования. Зависит от того, что вы будете делать. Если вы можете принять как должное среду рабочего стола и отсутствие удаленных подключений, может быть, все в порядке. Если нет, все возможные случаи должны быть обработаны с проверкой ошибок.
41754
@uprego Не могли бы вы рассказать о "отсутствии удаленных соединений"?
Santaru72
Возможно, вы используете постоянный сеанс tmux с опцией 256 цветов, но если вы присоедините его из сеанса ssh, возможные сценарии расширятся слишком сильно, чтобы перечислять их. Каждое приложение будет иметь или не иметь желаемого эффекта в зависимости от способности каждого программиста. Как указывает @goldilocks, его ответ не должен быть опасным, но есть разница между «не должно быть» и «не может быть».
41754
@uprego: На самом деле я должен был сказать «не могу», если не считать нечитаемый результат «опасным».
Златовласка

Ответы:

7

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

На значение TERMнужно ссылаться в системной базе данных terminfo (или для нескольких устаревших систем в базе данных termcap ). Terminfo и Termcap отображают типы терминалов в описании возможностей терминала, используемых приложениями. Значение TERMявляется типом терминала.

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

Другая причина, которая связана с предыдущей, заключается в том, что иногда существует несколько похожих записей для терминала с немного различными возможностями. Обычно это происходит, когда появляется новый терминал, который совместим с существующим терминалом, но имеет больше функций. Затем вы получаете выбор между традиционным именем, которое понимают все машины, но которое рекламирует только традиционные функции, или более новым именем, которое рекламирует все новые функции, но которое некоторые машины не понимают.

Примером этого является xterm с 16 цветами против xterm с 256 цветами. Традиционный xterm поддерживает только 16 цветов, так что именно это определяет xtermбаза данных терминала. Изменение xtermзаписи сделало бы пользователей более новых версий xterm счастливыми, но нарушило бы конфигурацию пользователей более старых версий xterm, которые входят в систему удаленно. Переключение на новое имя -  xterm-256colorпредоставляет новые возможности, когда они доступны, но не распознается, если вы входите удаленно на компьютеры с более старой базой данных терминала. Поскольку не существует решения, которое могло бы удовлетворить всех, у вас есть выбор: либо придерживаться xtermи не получать 256 цветов, либо использовать, xterm-256colorкоторое не работает, если вы входите на удаленные машины, которые его не поддерживают.

Оставляя значение по умолчанию xtermи устанавливая termNameресурс xterm-256color(что приводит к тому, что переменная окружения TERMустанавливается на одно и то же значение), оба являются разумным выбором. Установка TERMпроизвольных значений не сработает, но и то xtermи другое xterm-256colorимеет смысл.

Жиль "ТАК - перестань быть злым"
источник
3

Я установил переменную $ TERM, добавив строку XTerm * termName: xterm-256color в мой файл .Xresources.

Это хорошо, если вы знаете, что сделали; большинство графических терминалов поддерживают это.

Вы также можете установить его из командной строки или в скрипте

export TERM=xterm-256color

Это относится только к этому терминалу или последующим дочерним элементам.

Портативное значение по умолчанию будет просто xterm, что означает поддержку 16 цветов. Если у вас установлено 256 цветов и ваш терминал не поддерживает его, запуск 256-цветных приложений TUI будет выглядеть странно; Вы, вероятно, сразу заметите. Но это не должно быть опасно.

лютик золотистый
источник
Так что настройка XTerm*termName: xtermвместо XTerm*termName: xterm-256colorменя должна быть в порядке, верно?
Santaru72
Если это то, что вы хотите, не устанавливайте ничего; xtermпо умолчанию xterm;) но это означает 16 цветов. Основная цель использования xterm-256color- сообщить приложениям, что терминал поддерживает 256 цветов . Если вы этого не сделаете, они предполагают 16 цветов.
Златовласка