【问题标题】:Batch mode SSH gives error "TERM environment variable not set"批处理模式 SSH 给出错误“未设置 TERM 环境变量”
【发布时间】:2012-04-08 14:22:31
【问题描述】:

我确保在 .bashrc 中定义了 TERM。

但是,在批处理模式下运行 ssh 时,我得到:

 $ ssh pc-lab7 "echo $TERM; echo $0"
    TERM environment variable not set.
    linux
    -bash

如果我在交互模式下运行 ssh,我看不到这个错误。

如何消除此错误消息?

【问题讨论】:

  • 只有交互式 shell 读取 ~/.bashrc。使用~/.bash_profile(但请记住,在其中定义TERM 可能是个坏主意)。
  • 我尝试使用 ~/.bash_profile 并将其导出到那里,但我仍然看到相同的错误。我什至尝试在 /etc/profile 中设置它,但没有看到输出有任何差异。
  • 哦,对不起,完全搞砸了 ~/.bash_profile 只能由 login shell 读取。非交互式 shell 不会自动执行任何 .rc 文件。
  • 我明白了。非常感谢您的回答。有没有办法为非交互式 SSH 设置 TERM。我正在尝试安装一个尝试以批处理模式进行 SSH 的软件,但它失败了,因为输出的第一行是“未设置 TERM 环境变量”我无法修改它执行的命令。
  • 我不知道你的系统出了什么问题,通常应该设置 TERM,即使设置为“哑”。也许它没有在本地机器上设置?

标签: linux ssh


【解决方案1】:

使用-t 选项来ssh 分配tty

 -t      Force pseudo-tty allocation.  This can be used to execute arbitrary
         screen-based programs on a remote machine, which can be very useful,
         e.g. when implementing menu services.  Multiple -t options force tty
         allocation, even if ssh has no local tty.

【讨论】:

  • 只是好奇。这对 crontabs 有帮助吗?我的意思是如果它经过测试。我知道很有可能。
【解决方案2】:

我终于找到了这个烦人的“未设置TERM环境变量”警告的原因。

事实证明,当 ssh 在没有交互式用户的情况下以批处理模式执行时,在启动脚本中调用“clear”命令会产生此错误。

注释掉脚本中的“clear”行为我解决了这个问题。

【讨论】:

    猜你喜欢
    • 2013-04-20
    • 2019-03-24
    • 2017-10-30
    • 2014-02-10
    • 2017-08-26
    • 1970-01-01
    • 2015-06-18
    • 2013-10-25
    • 2012-01-18
    相关资源
    最近更新 更多