我正在尝试在远程机器上运行 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 上运行。