来自屏幕的 ssh 导致未知的终端错误

god*_*god 10 ssh gnu-screen terminal-multiplexer terminal

我正在尝试从一个 Ubuntu 主机到另一个从屏幕内建立 ssh 连接(通过 lsh)。如果我尝试mc在此之后立即运行,则会出现以下错误:

Unknown terminal: screen-256color-s
Check the TERM environment variable.
Also make sure that the terminal is defined in the terminfo database.
Alternatively, set the TERMCAP environment variable to the desired
termcap entry.
Run Code Online (Sandbox Code Playgroud)

问题是——是谁造成了这次失败?是本地主机吗?偏僻的?缺少某些包裹(哪个?),某些未完成的东西lsh-server?或客户?

只是要清楚 - 我不想要像“TERM = xterm mc”这样的解决方法,我希望能够在(远程)控制台上使用支持256色的视觉主题。

ikr*_*bbe 7

只需设置另一个 TERM,例如

TERM="rxvt"
Run Code Online (Sandbox Code Playgroud)

或者

TERM="xterm"
Run Code Online (Sandbox Code Playgroud)

或者

TERM="vt102"
Run Code Online (Sandbox Code Playgroud)

也许也有export TERM帮助。

TERM变量由cursestermcap程序使用,例如mcor dialog,从 terminfo/termcap 数据库中读取终端转义码,在那里执行命令,因此在您的情况下是在远程系统中。

要支持“screen-256color-s” TERM 类型,必须在数据库中安装此终端类型。

作为一个好的起点阅读man 5 terminfo


god*_*god 6

最后,我设法找出提供 screen-256-color-s 的“明显”包(必须安装在远程机器上):

sudo apt install ncurses-term
Run Code Online (Sandbox Code Playgroud)

为我解决了这个问题:漂亮的 256 种颜色,不需要使用环境变量进行丑陋的解决方法。万岁!:)


Arc*_*ege 5

GNUscreen正在本地设置$TERM,并将ssh该值传递到远程端。您可以做一些事情。

  • 检测screen-256-color-s远程端并设置为更理智。从此你可以拥有case $TERM in screen-256*) TERM=screen;; esac
  • 从本地端,已screen设置终端。在你的~/.screenrc文件中有:term screen.
  • 如果您有screen打开ssh呼叫的命令,请添加一个-T选项:screen -T screen ssh user@host
  • 在本地~/.bashrc,如果检测到与上面远程端类似的不兼容终端,请设置终端。