2013-04-26 128 views
38

當運行show:TERM環境變量未設置時,我有一個file.sh。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

很好。你有問題嗎? – 2013-04-26 17:30:53

+0

服務器運行正常,Cron每2分鐘調用一次.sh,但有時會顯示TERM環境變量未設置,那麼.sh不會做任何事情。 – meyquel 2013-04-26 17:42:02

+0

我在同一個服務器上有一些.sh,Cron在不同的時間間隔內調用。 – meyquel 2013-04-26 17:51:11

回答

67

你可以看到,如果這真的不是設置。運行命令set | grep TERM

如果沒有,你可以將它設置這樣的: export TERM=xterm

+10

export TERM = linux也可以運行 – 2016-08-26 05:39:15

5

你已經回答了這個說法的問題:

的Cron調用此.sh每2分鐘

的Cron不在終端中運行,那麼爲什麼你會期望一個被設置?

獲取此錯誤消息的最常見原因是因爲腳本嘗試獲取用戶的.profile,該用戶在執行與tty有關的任何操作之前未檢查其是否在終端中運行。解決方法包括使用shebang行,如:!

#/斌/慶典-p

導致系統級配置文件腳本的採購,其中(一個希望)不會嘗試做任何事情,太傻了,將有守衛依賴於從終端運行的代碼。

如果這是整個腳本,那麼TERM錯誤來自其他比腳本的純文本內容。

+0

怎麼看腳本finaly ??? – meyquel 2013-04-30 16:40:51

+0

其他.sh在不同的時間間隔內由cron調用,當此錯誤出現重新啓動命令不起作用時... – meyquel 2013-04-30 17:11:51

+0

對不起,但我發現很難理解你在這些評論中說的話。提到的shebang線應該在腳本的開頭 - 第一行。沒有提及另一個腳本,如果重新啓動不起作用,但是你以root身份運行,那麼你的系統有其他問題。 – Petesh 2013-05-01 08:09:29

21

在從cron調用的腳本(無終端)中使用終端命令(即「清除」)將觸發此錯誤消息。在您的特定腳本中,smbmount命令需要一個終端,在這種情況下,上述解決方法是適當的。

+7

這對我來說是個問題 – 2015-12-02 14:25:57

+2

如果將'clear'(或其他終端命令)添加到'.bashrc'或從'.bashrc'調用的其他腳本將導致相同。 – madD7 2017-08-27 06:59:41