我最近在直接通过命令运行命令时开始收到以下错误ssh
:
tput:没有 $TERM 的值并且没有指定 -T
我从一个 Linux 机器上运行的命令(我们将其称为α) 到盒子测试版产生错误的是:
[dtbarne@alpha ~]$ ssh beta ls
一切似乎都运行正常,我只是得到了上述错误的 33 行。如果我尝试在另一台服务器上运行相同的命令,例如[dtbarne@alpha ~]$ ssh charlie ls
,我看不到该错误,因此它似乎与测试版。
但是,如果我直接进入会话[dtbarne@alpha ~]$ ssh beta
然后运行 ls,我永远不会看到错误。
答案1
tput
最有可能的是,用户的.bashrc
on中有一个命令beta
,但它没有检查 shell 是否是交互式的。这不仅会中断,还会中断调用ssh
shell 进行文件名扩展的各种程序(vi
/ nvi
/中带有通配符的文件名vim
、Perl 的<*>
glob 运算符等)。
使用 Bourne/POSIX 兼容 shell 时,您应该测试i
中的标志$-
或测试$PS1
是否非空(前者是官方方式);使用csh
/tcsh
您测试$?prompt
。
答案2
尝试
ssh -t host ls
或者
env TERM=xterm ssh host ls
尝试使用 shell 重定向错误流,如果您仍然看到错误消息,则表示错误来自远程服务器。如果没有,则表示错误来自您的客户端。Termcaps 错误大多发生在环境变量“TERM”未正确设置时。