SSH tput 警告/通知(错误?)

SSH tput 警告/通知(错误?)

我最近在直接通过命令运行命令时开始收到以下错误ssh

tput:没有 $TERM 的值并且没有指定 -T

我从一个 Linux 机器上运行的命令(我们将其称为α) 到盒子测试版产生错误的是:

[dtbarne@alpha ~]$ ssh beta ls

一切似乎都运行正常,我只是得到了上述错误的 33 行。如果我尝试在另一台服务器上运行相同的命令,例如[dtbarne@alpha ~]$ ssh charlie ls,我看不到该错误,因此它似乎与测试版

但是,如果我直接进入会话[dtbarne@alpha ~]$ ssh beta然后运行 ​​ls,我永远不会看到错误。

答案1

tput最有可能的是,用户的.bashrcon中有一个命令beta,但它没有检查 shell 是否是交互式的。这不仅会中断,还会中断调用sshshell 进行文件名扩展的各种程序(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”未正确设置时。

相关内容