Hai risposto alla domanda con questa affermazione:
Cron lo chiama
.sh
ogni 2 minuti
Cron non funziona in un terminale, quindi perché dovresti aspettarti che ne venga impostato uno?
Il motivo più comune per ottenere questo messaggio di errore è perché lo script tenta di ottenere il codice .profile
dell'utente che non controlla che sia in esecuzione in un terminale prima di fare qualcosa di tty correlato. Le soluzioni alternative includono l'utilizzo di una linea shebang come:
#!/bin/bash -p
Il che causa l'approvvigionamento di script di profilo a livello di sistema che (si spera) non tenti di fare qualcosa di troppo sciocco e avrà protezioni attorno al codice che dipende dall'essere eseguito da un terminale.
Se questo è l'intero script, allora il TERM
l'errore proviene da qualcosa altro rispetto al semplice contenuto dello script.
L'utilizzo di un comando terminale, ad esempio "clear", 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 le soluzioni alternative di cui sopra sono appropriate.
Puoi vedere se davvero non è impostato . Esegui il comando set | grep TERM
.
In caso contrario, puoi impostarlo in questo modo:export TERM=xterm