我最近开始直接通过ssh命令运行命令时收到以下错误:
tput:$ TERM没有值,没有指定-T
我从一个linux盒子(我们将其称为alpha )运行到box beta来产生错误的命令是:
[dtbarne@alpha ~]$ ssh beta ls
一切似乎工作正常,我只是得到上述错误的33行。 如果我尝试运行相同的命令到另一台服务器,如[dtbarne@alpha ~]$ ssh charlie ls ,我没有看到错误,所以它似乎被隔离到testing版 。
但是,如果我只用[dtbarne@alpha ~]$ ssh beta进入会话,然后运行ls,我就不会看到错误。
很可能在用户的.bashrc有一个tput命令,它不会检查shell是否是交互式的。 这不仅会破坏ssh而且还会调用各种程序来调用文件名扩展(在vi / nvi / vim使用通配符的文件名,Perl的glob操作符等)。
有了Bourne / POSIX兼容shell,你应该testing$-标志,或者testing$PS1是非空的(前者是官方的方式)。 用csh / tcsh你testing$?prompt 。
尝试
ssh -t host ls
要么
env TERM=xterm ssh host ls
尝试使用shellredirect错误stream,如果仍然看到错误消息,这意味着它来自远程服务器。 如果不是,它来自你的客户。 Termcaps错误主要发生在环境variables“TERM”未正确设置的情况下。