为什么 tmux 将 TERM 变量设置为屏幕?

sev*_*evo 24 terminal tmux

引用tmux手册页:

对于在 tmux 中运行的所有程序,TERM 环境变量必须设置为“screen”。新窗口将自动将“TERM=screen”添加到它们的环境中,但必须注意不要在 shell 启动文件中重置它。

这是因为tmux会话可以连接到任何终端(例如远程),screen是最低公分母?如果我知道我的终端,我是否可以在没有意外结果的情况下强制执行它,或者某些不受支持的功能会中断(如滚动)?

Tho*_*key 14

这样做是为了利用先前安装的 GNU screen 终端描述。

TMUX屏幕提供具有(或多或少)“相同”的终端的应用程序的描述,以简化从不同的终端连接。tmux 和 screen 程序应该处理内部(TERM=screen)和外部(xterm、linux 等)之间的差异。所以screen终端描述已经安装在“任何地方”(通常由 ncurses 安装)。

有一些区别:

  • GNU screen 有一个非常古老的问题来表示“突出”功能(从技术上讲,这不是一个特定的终端功能,而是为了方便 Curses 应用程序的抽象)。tmux 没有这个限制。但是改进的TERM=tmux不一定“无处不在”。
  • GNU screen 具有使用混合终端描述的功能。鉴于外部 TERM=xterm 和“screen.xterm”的存在,它将为内部 TERM 值选择那个。(例如参见终端数据库)。tmux 不会这样做。


jas*_*yan 5

tmux 2.1 开始,您可以使用tmux terminfo

'default-terminal' 现在是一个会话选项。此外,如果将其设置为“screen-*”,则模拟 screen 的作用。如果需要斜体,可以将其设置为“tmux”,但这仍然是新的,不一定在所有安装了旧 ncurses 的平台上都受支持