it-swarm.com.de

TERM-Umgebungsvariable nicht festgelegt

Ich habe eine file.sh mit dieser, beim Ausführen von show: TERM Umgebungsvariable nicht gesetzt.

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

Sie können sehen, ob es wirklich nicht set ist. Führen Sie den Befehl set | grep TERM.

Wenn nicht, können Sie es so einstellen: export TERM=xterm

88
cpr4t3s

Bei Verwendung eines Terminalbefehls, d. H. "Clear", wird in einem von cron (kein Terminal) aufgerufenen Skript diese Fehlermeldung ausgelöst. In Ihrem speziellen Skript erwartet der Befehl smbmount ein Terminal. In diesem Fall sind die obigen Umgehungen angebracht.

34
Josiah DeWitt

Sie haben die Frage mit dieser Aussage beantwortet:

Cron nennt dies alle 2 Minuten .sh

Cron wird nicht in einem Terminal ausgeführt. Warum sollten Sie also damit rechnen, dass eines festgelegt wird?

Der häufigste Grund für diese Fehlermeldung ist, dass das Skript versucht, den .profile Des Benutzers zu ermitteln, der nicht prüft, ob er in einem Terminal ausgeführt wird, bevor er etwas Tty-bezogenes ausführt. Problemumgehungen umfassen die Verwendung einer Shebang-Linie wie:

#!/bin/bash -p

Wodurch die Beschaffung von Profilskripten auf Systemebene verursacht wird, die (hoffentlich) nicht versuchen, etwas zu Dummes zu tun, und die Code schützen, der von der Ausführung auf einem Terminal abhängt.

Wenn dies die Gesamtheit des Skripts ist, kommt der Fehler TERM von etwas anderem als dem einfachen Inhalt des Skripts.

6
Petesh