未设置TERM环境变量

时间:2013-04-26 17:26:43

标签: linux sh

我有一个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..."

5 个答案:

答案 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
相关问题