web-dev-qa-db-fra.com

Variable d'environnement TERM non définie

J'ai un fichier.sh avec cela, lors de l'exécution show: variable d'environnement TERM non définie.

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..."
47
meyquel

Vous pouvez voir si ce n'est vraiment pas set. Exécutez la commande set | grep TERM.

Sinon, vous pouvez le définir comme ça: export TERM=xterm

88
cpr4t3s

L’utilisation d’une commande de terminal, c’est-à-dire "clear", dans un script appelé depuis cron (no terminal) déclenchera ce message d’erreur. Dans votre script particulier, la commande smbmount attend un terminal, auquel cas les solutions ci-dessus sont appropriées.

34
Josiah DeWitt

Vous avez répondu à la question avec cette déclaration:

Cron appelle cela .sh toutes les 2 minutes

Cron ne fonctionne pas dans un terminal, alors pourquoi vous attendez-vous à ce qu'il en soit configuré?

La raison la plus courante pour obtenir ce message d'erreur est due au fait que le script tente de générer le code source de l'utilisateur .profile qui ne vérifie pas son exécution dans un terminal avant de faire quelque chose de connexe. Les solutions de contournement incluent l’utilisation d’une ligne Shebang telle que:

#!/bin/bash -p

Ce qui provoque la recherche de scripts de profil au niveau du système qui (on espère) ne cherche pas à faire quelque chose de trop stupide et qui aura des gardes autour du code qui dépend de son exécution depuis un terminal.

S'il s'agit de l'intégralité du script, l'erreur TERM provient d'un élément autre que le contenu brut du script.

6
Petesh