Чи правильно встановлювати змінну $ TERM вручну?


10

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

Якщо вам це потрібно, я запускаю Fedora 20 з xterm.


Це загальне питання програмування. Залежить від того, що ви будете робити. Якщо ви можете прийняти як належне середовище робочого столу та відсутність віддалених з'єднань, можливо, це буде добре. Якщо ні, всі можливі випадки повинні бути оброблені за допомогою перевірки помилок.
41754

@uprego Не могли б ви детальніше розглянути питання про "відсутність віддалених з'єднань"?
Сантару72

Можливо, ви використовуєте постійний сеанс tmux з кольоровою опцією 256, але якщо ви приєднаєте його до ssh сеансу, можливі сценарії занадто багато розширюються, щоб перелічити. Кожна програма матиме чи не бажаний ефект залежно від можливостей кожного програміста. Як вказує @goldilocks у своїй відповіді не повинно бути небезпечно, але є різниця між "не повинно бути" і "не може бути".
41754

@uprego: Реально я повинен був сказати "не можу", якщо ви не вважаєте нерозбірливий вихід "небезпечним".
золотинок

Відповіді:


7

Здебільшого не слід встановлювати TERMвручну. Змінна завжди встановлюється автоматично, і існує лише вузький набір обставин, коли значення за замовчуванням невірне.

Значення TERMпотреб повинно бути вказане в базі даних терміна (або для декількох старомодних систем у базі даних 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.

Це добре, якщо ви знаєте, що зробили; більшість терміналів GUI підтримують це.

Ви також можете встановити його з командного рядка або в сценарії

export TERM=xterm-256color

Це стосується лише цього терміналу або наступних дітей.

Портативний за замовчуванням був би справедливим xterm, що означає підтримку 16 кольорів. Якщо у вас 256-кольоровий набір, і ваш термінал не підтримує його, запуск 256-ти кольорових програм TUI буде просто виглядати дивно; ви, мабуть, помітите відразу. Але це не повинно бути небезпечно.


Так що встановлення XTerm*termName: xtermзамість XTerm*termName: xterm-256colorмене повинно бути добре, правда?
Сантару72

Якщо ви цього хочете, не встановлюйте нічого; xtermє типовим для xterm;), але це означає 16 кольорів. Основний сенс використання xterm-256color- сказати програмам, що термінал підтримує 256 кольорів . Якщо цього не зробити, вони припускають 16 кольорів.
золотинок
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.