通过 SSH 执行 Bash 文件时未设置术语环境变量

通过 SSH 执行 Bash 文件时未设置术语环境变量

我正在尝试在远程机器上运行 bash 脚本。如果我在终端中打开 ssh 连接,我可以轻松运行该脚本。但是当我像这样运行它时:

ssh 用户@ip < /etc/script

我收到错误:

TERM 环境变量未设置。

我在这里做错了什么?

答案1

使用 ssh 的-t选项可能会解决您的问题,因为它连接一个 tty 并设置一个适当的 TERM 环境变量。

ssh -t host < script

答案2

当您重定向输入时,ssh 客户端可能意识到输入未连接到 TTY,因此认为 TERM 不合适。

答案3

~user/.bashrc尝试在目标主机上输入以下几行:

if [ ! ${#TERM} > 0 ]
then
    export TERM=<value>
fi

${#变量}返回变量的字符串长度变量。因此,如果的长度TERM为 NULL(未设置)或 0,您可以手动设置您的TERM值。

您还可以考虑测试是否$SSH_CLIENT非零$SSH_CONNECTION,并且仅在这些条件下测试 TERM 值。

最后,这需要进入,.bashrc因为.bash_login仅在登录 shell 上运行。

相关内容