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

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

引用tmux手册页:

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

这是因为tmux会话可以附加到任何终端(例如远程),screen这是最低公分母吗?如果我知道我的终端,我可以强制它而不会出现意外结果,或者某些不受支持的功能会中断(例如滚动)吗?

答案1

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

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

有一些区别:

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

答案2

作为多路复用器2.1,您可以使用tmux 术语信息:

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

相关内容