当我跑
screen
在远程主机(运行 Linux)上,我收到以下错误:
Cannot find terminfo entry for 'xterm-256color'.
我在 Mac OSX Lion 上运行终端来访问远程主机。我已经用谷歌搜索了这个问题的解决方案,似乎人们建议这样做
export TERM=xterm-color
这对我不起作用。
请帮忙。
找出支持的 TERM:
ls /usr/share/terminfo/x
这将为您提供受支持的术语列表,即
xterm
xterm-xfree86
设置环境变量:
export TERM=xterm-xfree86
并运行屏幕:
TERMINFO='/usr/share/terminfo/' screen
在您用于 ssh 的终端应用程序中,转到首选项 -> 高级 -> 将终端声明为: -> xterm-color(或 xterm-256color 之外的其他内容)
此答案取自对该帖子的评论,该帖子有另一个解决方案: http ://marcoschuh.de/wp/?p=873
对于我的 Buffalo Linkstation,我是这样解决的:
cd /lib/terminfo/x
ln -s xterm-color xterm-256color
您在terminfo
远程计算机上缺少与“xterm-256color”匹配的文件。
Screen 不知道如何模拟您要求的终端(xterm-256color),因为它没有描述您正在使用的终端的文件(xterm-256color)。
您可以更改 ENV 变量TERM
以请求远程机器拥有的终端仿真。例如:export TERM=vt220
,但这会假设你的遥控器有一个 vt220 terminfo 文件,你不会得到漂亮的颜色,你必须做其他乏味的事情才能让它坚持下去。更好的...
如果您的本地机器有 terminfo 文件,但您的远程机器没有,例如,linux/macos 与 QNAP/QNAS/busybox/rpi/router/modem/IOTdevice 通话,那么...
您可以将必要的文件复制到它并指示您的远程终端将其用于屏幕。例如:
[local] $ scp /lib/terminfo/x/xterm-256color john@nasbox:xterm-256color
[local] $ ssh john@nasbox
[remote] $ ls
xterm-256color
[remote] $ TERMINFO='/share/homes/john/xterm-256color' screen
此时屏幕应该可以工作。您的本地计算机可能在terminfo
其他地方有该目录(/etc/terminfo/
并且/usr/share/terminfo/
是常见的替代方案;您可能需要四处寻找才能找到您的目录)。
要对其进行更永久的设置,请将其移至主目录中的“.terminfo”目录(如果您知道得更好,也可以在其他地方)。例如:
[remote] mkdir -p .terminfo/x
[remote] mv xterm-256color .terminfo/x
[nasbox] screen
相同的技术应该适用于其他终端仿真。ENV 变量TERM
决定了它应该尝试模拟哪个终端,并且同名文件提供了使这一切发生的魔法代码。
我以前使用默认的 Mac OS X 终端应用程序通过 ssh 访问我的基于 Ubuntu 的 tmux,发现了你描述的问题 - 我的 bash 和 tmux 设置为 screen-256color,这个选项甚至不在 Mac 的列表中终端首选项。
我尝试添加该行:
export TERM=screen-256color
作为启动命令,但它被忽略并在启动时被 xterm-color 覆盖。
我还设法将 Mac 终端的设置更改为 screen-256color,方法是选择 Shell > Export Settings,然后编辑它生成的 XML 文件,找到 xterm-color 行并将其更改为 screen-256color,然后选择 Shell > Importing this设置文件。然而,在启动终端后,我发现它仍然用 xterm-color 覆盖了这个设置。
所以我承认并下载了iTerm2,它允许我通过在纯文本字段中输入来更改 screen-256color 设置(而不是从有限的下拉菜单中选择)。这可以立即生效,甚至无需关闭并重新打开控制台。
所以总而言之,我建议使用 iTerm2 而不是默认的 Mac 终端(它似乎不允许您对 $TERM 进行更改)。
您可以ncurses-term
在远程服务器 (Debian/Ubuntu) 上安装以解决此问题。
I was able to change Mac OSX(10.7.5) terminal(v2.2.3, 303.2) emulation from the menu Terminal>Preferences>Settings>Advanced>Emulation Declare terminal as xterm-color
Opening a new terminal ssh connection enabled the new setting.
您可能需要在 Linux 主机上安装一个软件包,该软件包提供以下文件之一:
/usr/share/terminfo/x/xterm-256color
/lib/terminfo/x/xterm-256color
例如,在 Ubuntu 上,这是由ncurses-base
软件包提供的。
另一种情况,例如从内部升级到 Debian Buster screen
。
Terminfoxterm-256colour
格式已更改,因此screen
无法恢复之前的会话。
您可以使用export TERM=xterm
关闭屏幕会话,然后重新启动屏幕。这次它将使用正确的 terminfo 文件,因此它会成功。
来源:https ://bugs.debian.org/cgi-bin/bugreport.cgi?bug=901843
在问题中,用户的配置要求提供不是默认的终端描述screen
。这最终由 Apple 的更新解决。在问题中引用的版本中,Apple 没有提供该终端描述。他们现在这样做(并且自 2015 年以来一直如此)。作为记录,这里是一个目录列表,显示了 MacPorts (in /opt/local
)、本地构建的 ncurses (in /usr/local
) 和 Apple/system 文件的相关条目/usr/share
:
-rw-r--r-- 1 root 1912 Oct 3 2015 opt/local/share/terminfo/73/screen-256color
-rw-r--r-- 1 root 1924 Oct 3 2015 opt/local/share/terminfo/73/screen-256color-bce
-rw-r--r-- 1 root 1954 Oct 3 2015 opt/local/share/terminfo/73/screen-256color-bce-s
-rw-r--r-- 1 root 1940 Oct 3 2015 opt/local/share/terminfo/73/screen-256color-s
-rw-r--r-- 1 root 1912 Apr 12 04:22 usr/local/ncurses/share/terminfo/73/screen-256color
-rw-r--r-- 1 root 1924 Apr 12 04:22 usr/local/ncurses/share/terminfo/73/screen-256color-bce
-rw-r--r-- 1 root 1954 Apr 12 04:22 usr/local/ncurses/share/terminfo/73/screen-256color-bce-s
-rw-r--r-- 1 root 1940 Apr 12 04:22 usr/local/ncurses/share/terminfo/73/screen-256color-s
-rw-r--r-- 1 root 1828 Aug 22 2015 usr/share/terminfo/73/screen-256color
-rw-r--r-- 1 root 1840 Aug 22 2015 usr/share/terminfo/73/screen-256color-bce
-rw-r--r-- 1 root 1866 Aug 22 2015 usr/share/terminfo/73/screen-256color-bce-s
-rw-r--r-- 1 root 1856 Aug 22 2015 usr/share/terminfo/73/screen-256color-s
你可能会注意到一些细节:
在 OSX 上,默认文件系统忽略大小写,因此s
以十六进制编码(使其与 不同S
)
这些条目的大小略有不同。Apple 提供了旧版本的终端数据库,它缺少一些功能。
使用toe
,我看到了这个:
--> /usr/local/ncurses/share/terminfo ----> /usr/share/terminfo ------> /opt/local/share/terminfo *-*-*-: screen-256color 256色的GNU屏幕 *-*-*-: screen-256color-bce 具有 256 色和 BCE 的 GNU 屏幕 *-*-*-: screen-256color-bce-s 使用 BCE 和状态行的 256 色 GNU 屏幕 *-*-*-: screen-256color-s 具有 256 种颜色和状态行的 GNU 屏幕
并将系统与 MacPorts 进行比较:
--- macports 2017-04-26 04:38:21.000000000 -0400
+++ system 2017-04-26 04:40:08.000000000 -0400
@@ -1,19 +1,19 @@
-# Reconstructed via infocmp from file: /opt/local/share/terminfo/73/screen-256color
+# Reconstructed via infocmp from file: /usr/share/terminfo/73/screen-256color
screen-256color|GNU Screen with 256 colors,
am, km, mir, msgr, xenl,
- colors#256, cols#80, it#8, lines#24, pairs#32767,
+ colors#256, cols#80, it#8, lines#24, ncv#3, pairs#32767,
acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
clear=\E[H\E[J, cnorm=\E[34h\E[?25h, cr=^M,
csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
- cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
- dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
- enacs=\E(B\E)0, flash=\Eg, home=\E[H, ht=^I, hts=\EH,
- ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=^J, is2=\E)0,
- kbs=^H, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
- kcuu1=\EOA, kdch1=\E[3~, kend=\E[4~, kf1=\EOP, kf10=\E[21~,
+ cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
+ dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
+ flash=\Eg, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
+ il=\E[%p1%dL, il1=\E[L, ind=^J, initc@, is2=\E)0, kbs=^H,
+ kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+ kdch1=\E[3~, kend=\E[4~, kf1=\EOP, kf10=\E[21~,
kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
khome=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
@@ -22,6 +22,6 @@
rmul=\E[24m, rs2=\Ec\E[?1000l\E[?25h, sc=\E7,
setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
- sgr=\E[0%?%p6%t;1%;%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;m%?%p9%t\016%e\017%;,
+ sgr=\E[0%?%p6%t;1%;%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
sgr0=\E[m\017, smacs=^N, smcup=\E[?1049h, smir=\E[4h,
smkx=\E[?1h\E=, smso=\E[3m, smul=\E[4m, tbc=\E[3g,
我在完全不同的情况下遇到了同样的问题。
通过输入 infocmp,我得到了无法打开 terminfo 的消息。但它也告知了它试图获得的路径。我所做的只是用正确的术语(xterm-256color)创建那条路径。使用 find * 我在另一个目录中找到它并复制到新目录。
您只需复制/usr/share/terminfo/x/xterm-256color
到您要连接的服务器。
如果您导出变量,请不要忘记刷新终端源...
source ~/.bashrc
或者只是打开一个新终端。可能是原始海报无法导出的原因。