TERM环境variables未设置

我有一个file.sh,当运行show:TERM环境variables没有设置。

smbmount //172.16.44.9/APPS/Interfas/HERRAM/sc5 /mnt/siscont5 -o iocharset=utf8,username=backup,password=backup2011,r if [ -f /mnt/siscont5/HER.TXT ]; then echo "No puedo actualizar ahora" umount /mnt/siscont5 else if [ ! -f /home/emni/siscont5/S5.TXT ]; then echo "Puedo actualizar... " touch /home/emni/siscont5/HER.TXT touch /mnt/siscont5/SC5.TXT mv -f /home/emni/siscont5/CCORPOSD.DBF /mnt/siscont5 mv -f /home/emni/siscont5/CCTRASD.DBF /mnt/siscont5 rm /mnt/siscont5/SC5.TXT rm /home/emni/siscont5/HER.TXT echo "La actualizacion ha sido realizada..." else echo "No puedo actualizar ahora: Interfaz exportando..." fi fi umount /mnt/siscont5 echo "/mnt/siscont5 desmontada..." 

你可以看看它是否真的没有设置 。 运行set | grep TERM命令 set | grep TERM

如果没有,你可以这样设置: export TERM=xterm

使用terminal命令即“清除”,在从cron调用的脚本(无terminal)将触发此错误消息。 在你的脚本中,smbmount命令需要一个terminal,在这种情况下,上面的解决方法是合适的。

你用这个陈述回答了这个问题:

Cron每2分钟调用一次.sh

克朗不在terminal运行,那么为什么你会期望一个被设置?

得到这个错误信息的最常见的原因是因为脚本尝试获取用户的.profile ,在执行某些与tty相关的操作之前,它不检查它是否在terminal中运行。 解决方法包括使用shebang行,如:

#!/ bin / bash -p

这导致了系统级configuration文件的脚本,这是人们所希望的,它不会试图做太傻的事情,并且会绕过依赖于从terminal运行的代码。

如果这是整个脚本,则TERM错误来自脚本的纯文本内容以外的内容。