Sie haben die Frage mit dieser Aussage beantwortet:
Cron nennt dies .sh
alle 2 Minuten
Cron läuft nicht in einem Terminal, warum sollten Sie also erwarten, dass eines eingerichtet wird?
Der häufigste Grund für diese Fehlermeldung ist, dass das Skript versucht, den .profile
des Benutzers abzurufen was nicht überprüft, ob es in einem Terminal läuft, bevor es etwas TTY-bezogenes tut. Problemumgehungen umfassen die Verwendung einer Shebang-Zeile wie:
#!/bin/bash -p
Was das Sourcing von Profilskripten auf Systemebene verursacht, die (hoffentlich) nicht versuchen, etwas zu Dummes zu tun, und Code schützen, der davon abhängt, dass er von einem Terminal ausgeführt wird.
Wenn dies das gesamte Skript ist, dann TERM
Fehler kommt von etwas anderem als der reine Inhalt des Skripts.
Die Verwendung eines Terminalbefehls, z. B. "clear", in einem Skript, das von cron (kein Terminal) aufgerufen wird, löst diese Fehlermeldung aus. In Ihrem speziellen Skript erwartet der Befehl smbmount ein Terminal, in diesem Fall sind die oben genannten Problemumgehungen angemessen.
Sie können sehen, ob es wirklich nicht gesetzt ist . Führen Sie den Befehl set | grep TERM
aus .
Wenn nicht, können Sie es so einstellen:export TERM=xterm