![Почему tmux устанавливает переменную TERM на экран?](https://rvso.com/image/76417/%D0%9F%D0%BE%D1%87%D0%B5%D0%BC%D1%83%20tmux%20%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%B0%D0%B2%D0%BB%D0%B8%D0%B2%D0%B0%D0%B5%D1%82%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%83%D1%8E%20TERM%20%D0%BD%D0%B0%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%3F.png)
Ссылка на tmux
страницу руководства:
Переменная окружения TERM должна быть установлена на «screen» для всех программ, работающих внутри tmux. Новые окна автоматически будут иметь «TERM=screen» в своей среде, но нужно быть осторожным, чтобы не сбросить это в файлах запуска оболочки.
Это потому, что tmux
сеанс может быть подключен к любому терминалу (например, удаленному), screen
являясь наименьшим общим знаменателем? Если я знаю свой терминал, могу ли я принудительно его включить без неожиданных результатов, или некоторые неподдерживаемые возможности сломаются (например, прокрутка)?
решение1
Это делается для того, чтобы воспользоваться ранее установленным описанием терминала для GNU screen.
Обаtmuxиэкранпредоставлять приложениям (более или менее) "те же" описания терминалов для упрощения подключения с разных терминалов. Программы tmux и screen должны обрабатывать различия между внутренним (TERM=screen) и внешним (xterm, linux и т. д.). Поэтому описание терминала screen
было установлено "везде" (обычно ncurses).
Есть некоторые отличия:
- Экран GNU имееточень старая проблемапредставляющая собой "выдающуюся" функцию (которая технически не является конкретной функцией терминала, а скорее абстракцией для удобства приложений curses). tmux не имеет такого ограничения. Но улучшенныйТЕРМ=tmuxне обязательно «везде».
- GNU screen имеет функцию использования гибридных описаний терминала. Учитывая внешний TERM=xterm и существование "screen.xterm", он выберет его для внутреннего значения TERM. (см. напримербаза данных терминала). tmux этого не делает.
решение2
По состоянию наtmux 2.1, вы можете использоватьtmux
терминфо:
'default-terminal' теперь является опцией сеанса. Кроме того, если он установлен на 'screen-*', то эмулируйте то, что делает screen. Если требуется курсив, его можно установить на 'tmux', но это все еще новое и не обязательно поддерживается на всех платформах со старыми установками ncurses