我有一个file.sh,当运行show:TERM环境变量未设置时。
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..."
答案 0 :(得分:86)
您可以看到它是否真的不是设置。运行命令set | grep TERM
。
如果没有,您可以这样设置:
export TERM=xterm
答案 1 :(得分:32)
在从cron(无终端)调用的脚本中使用终端命令,即"清除",将触发此错误消息。在您的特定脚本中,smbmount命令需要终端,在这种情况下,上述解决方法是合适的。
答案 2 :(得分:6)
你已用这句话回答了这个问题:
Cron每2分钟调用
.sh
Cron不在终端中运行,那你为什么要设置一个呢?
获取此错误消息的最常见原因是因为脚本尝试获取用户的.profile
,该用户的TERM
在执行tty相关操作之前未检查它是否在终端中运行。解决方法包括使用shebang这样的行:
#!/ bin / bash -p
导致系统级配置文件脚本的来源(人们希望)不会尝试做任何过于愚蠢的事情,并且会依赖于从终端运行的代码。
如果这是整个脚本,那么{{1}}错误来自其他而不是脚本的简单内容。
答案 3 :(得分:0)
已解决:在Debian 10上,通过在CRONTAB(根)执行但作为www-data执行的脚本上添加“ EXPORT TERM = xterm”。
$ crontab -e
return (
<div>
<List className="list">
{Object.values(props.sectionInfo).map(section => {
return Object.keys(section).map((item, index) => {
return (
<ListItem button className='list-item'>
<ListItemText primary={item} />
</ListItem>
)
});
})}
</List>
</div>
);
FILE = / usr / local / bin / todos.sh
*/15 * * * * /bin/su - www-data -s /bin/bash -c '/usr/local/bin/todos.sh'
答案 4 :(得分:0)
如果您使用的是 Docker PowerShell 映像,请像这样使用 -e 标志为终端设置环境变量
docker run -i -e "TERM=xterm" mcr.microsoft.com/powershell