web-dev-qa-db-ja.com

TERM環境変数が設定されていません

Show:TERM環境変数が設定されていない場合、これを含むfile.shがあります。

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

本当にsetでないか確認できます。コマンドset | grep TERMを実行します。

そうでない場合は、次のように設定できます:export TERM=xterm

88
cpr4t3s

Cron(ターミナルなし)から呼び出されたスクリプトでターミナルコマンド(「クリア」)を使用すると、このエラーメッセージが表示されます。特定のスクリプトでは、smbmountコマンドは端末を想定しています。この場合、上記の回避策が適切です。

34
Josiah DeWitt

次の声明で質問に答えました。

Cronはこれを.shを2分ごとに呼び出します

Cronは端末で実行されません。なぜ設定されるのでしょうか?

このエラーメッセージが表示される最も一般的な理由は、スクリプトがユーザーの.profileのソースを取得しようとするためです。回避策には、次のようなShebangラインの使用が含まれます。

#!/ bin/bash -p

これにより、システムレベルのプロファイルスクリプトのソースが作成されます。このスクリプトは、愚かなことを何も試みず、端末からの実行に依存するコードを保護します。

これがスクリプト全体である場合、TERMエラーは、スクリプトのプレーンコンテンツ以外の何かotherから発生しています。

6
Petesh