Чому tmux встановлює змінну TERM на екран?


19

Посилаючись на tmuxсторінку чоловіка:

Змінна середовища TERM повинна бути встановлена ​​на "екран" для всіх програм, що працюють в tmux. У нових вікнах автоматично буде додано "TERM = екран" у їхнє середовище, але слід бути обережним, щоб не скинути це у файли запуску оболонки.

Це це тому, що tmuxсеанс можна приєднати до будь-якого терміналу (наприклад, віддаленого), screenбудучи найменшим загальним знаменником? Якщо я знаю свій термінал, чи можу я примусити його без несподіваних результатів, або будуть порушені деякі непідтримувані можливості (наприклад, прокрутка)?

Відповіді:


13

Це робиться для того, щоб скористатися раніше встановленим описом терміналу для екрану GNU.

І tmux, і екран надають програмам (більш-менш) "однакові" описи терміналів для спрощення підключення з різних терміналів. Програми tmux і screen повинні вирішувати відмінності між внутрішнім (TERM = екран) і зовнішнім (xterm, linux тощо). Отже, screenопис терміналу встановлено "скрізь" (як правило, за ncurses).

Є деякі відмінності:

  • На екрані GNU є дуже стара проблема, що представляє функцію "standout" (яка технічно не є специфічною функцією терміналу, а швидше абстракцією для зручності застосунків прокльонів). tmux не має цього обмеження. Але покращений TERM = tmux не обов'язково "скрізь".
  • Екран GNU має функцію використання описів гібридних терміналів. Враховуючи зовнішній TERM = xterm та існування "screen.xterm", він вибере це для внутрішнього значення TERM. (див., наприклад, базу даних терміналів ). tmux цього не робить.

5

Станом на tmux 2.1 ви можете використовувати tmux terminfo :

'default-terminal' тепер є сеансом. Крім того, якщо для цього встановлено значення 'screen- *', то емулюйте, що робить екран. Якщо курсив потрібен, його можна встановити на 'tmux', але це все ще є новим і не обов'язково підтримується на всіх платформах із встановленими старішими ncurses

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.