2013-04-26 6 views
38

У меня есть файл.sh с этим при запуске show: переменная среды TERM не установлена.Переменная окружения 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..." 
+12

Это хорошо. У вас возникли вопросы? –

+0

сервер работает нормально, Cron вызывает это .sh каждые 2 минуты, но иногда показывает переменную окружения TERM, которая не установлена, тогда .sh ничего не делает. – meyquel

+0

У меня на том же сервере какой-то .sh, который Cron вызывает в разном интервале времени. – meyquel

ответ

67

Вы можете увидеть, если это на самом деле не установить. Выполните команду set | grep TERM.

Если нет, то вы можете установить его так: export TERM=xterm

+10

export TERM = linux также работает –

5

Вы ответили на вопрос, с этим утверждением:

Крон называет это .sh каждые 2 минуты

Cron не запускается в терминале, так почему бы вам ожидать, что он будет установлен?

Наиболее распространенная причина для получения этого сообщения об ошибке заключается в том, что сценарий пытается загрузить .profile пользователя, который не проверяет, что он работает в терминале, прежде чем делать что-то связанное с tty. Обходные включают использование притон линии, как:

#/бен/Баш -p

Что вызывает сорсинг сценариев профиля системного уровня, которые (будем надеяться) не пытается сделать что-то слишком глупо и будет иметь защищает код, который зависит от запуска от терминала.

Если это весь скрипт, то ошибка TERM исходит от чего-то другого, чем простое содержание скрипта.

+0

как выглядит скрипт finaly ??? – meyquel

+0

другой .sh вызывает cron в разном интервале времени, когда эта ошибка появляется, перезагружается comand не работает ... – meyquel

+0

Прошу прощения, но мне очень сложно понять, что вы говорите в этих комментариях. упомянутая линия shebang должна быть в начале сценария - самой первой строкой. ничего не упоминается о другом скрипте, и если перезагрузка не работает, но вы используете ее как root, тогда у вас есть что-то еще не так с системой. – Petesh

21

Использование команды терминала, то есть «очистка», в сценарии, вызванном cron (без терминала), вызовет это сообщение об ошибке. В вашем конкретном скрипте команда smbmount ожидает терминала, и в этом случае подходящие рабочие обходы являются подходящими.

+7

это была проблема для меня –

+2

'clear' (или другая команда терминала), если она добавлена ​​в' .bashrc' или другие скрипты, вызываемые из '.bashrc', приведет к тому же. – madD7

Смежные вопросы