2013-04-26 14 views
38

Ho un file.sh con questo, quando esegui mostra: variabile d'ambiente TERM non impostata.variabile d'ambiente TERM non impostata

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..." 
+12

Questo è bello. Hai una domanda? –

+0

il server sta funzionando bene, Cron chiama questo .sh ogni 2 minuti, ma a volte mostra la variabile di ambiente TERM non impostata, quindi .sh non fa nulla. – meyquel

+0

Ho nello stesso server qualche .sh che Cron chiama in un diverso intervallo di tempo. – meyquel

risposta

67

Si può vedere se è davvero non impostato. Esegui il comando set | grep TERM.

In caso contrario, è possibile impostare in quel modo: export TERM=xterm

+10

export TERM = linux funziona anche –

5

hai risposto alla domanda con questa affermazione:

Cron chiama questo .sh ogni 2 minuti

Cron non funziona in un terminale, quindi perché dovresti aspettarne uno?

Il motivo più comune per ottenere questo messaggio di errore è perché lo script tenta di generare il numero .profile dell'utente che non controlla che sia in esecuzione in un terminale prima di fare qualcosa relativo a tty. Soluzioni alternative includono l'utilizzo di una linea di shebang come:!

#!/Bin/bash -p

che provoca l'approvvigionamento di script profilo a livello di sistema che (si spera) non tenta di fare qualcosa di troppo stupido e avrà guardie attorno al codice che dipende dall'essere lanciati da un terminale.

Se questa è la totalità dello script, quindi l'errore TERM proviene da qualcosa altro rispetto al contenuto normale dello script.

+0

come sembra lo script finaly ??? – meyquel

+0

altro .sh sta chiamando da cron in un diverso intervallo di tempo, quando appare questo errore riavvio comand non funziona ... – meyquel

+0

Mi dispiace, ma trovo molto difficile capire cosa stai dicendo in questi commenti. la linea di shebang menzionata dovrebbe essere all'inizio della sceneggiatura - la prima riga. non viene menzionato nulla su un altro script, e se il riavvio non funziona, ma si sta eseguendo come root, allora si ha qualcos'altro nel sistema. – Petesh

21

L'utilizzo di un comando di terminale, ovvero "cancella", in uno script chiamato da cron (nessun terminale) attiverà questo messaggio di errore. Nel tuo particolare script, il comando smbmount si aspetta un terminale, nel qual caso i comandi sopra descritti sono appropriati.

+7

questo è stato il problema per me –

+2

'clear' (o un altro comando di terminale) se aggiunto a' .bashrc' o altri script chiamati da '.bashrc', risulterà lo stesso. – madD7

Problemi correlati