为什么tmux将TERM变量设置为screen?


19

引用tmux手册页:

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

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

Answers:


13

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

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

有一些区别:

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

5

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.