• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[geloest] locale funktioniert über cron nicht

Hey

folgendes Script funktioniert bei direkter Ausführung bestens

DAT=`/bin/date | awk '{print $1}'`
echo $DAT
Die Ausgabe ist zb. Mi (Wochentag in deutsch)

Sobald ich aber über cron (mit crontab -e unter root eingetragen) dieses Script ausführe bekomm ich die engl. ausgabe des Wochentages (Wed)

hier die locale
LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=

Wiso haut das script über cron nicht so hin wies sollte ?

cu
Huflatisch
 
A

Anonymous

Gast
Wenn du dich irgendwo am Rechner anmeldest, oder die Anmeldung automatisch läuft, dann wird eine Shell-Umgebung mit einer Vielzahl von Variablen gesetzt und exportiert. Alles was du selbst auf dem Rechner dann auf der Konsole ausführst läuft dann in dieser Shellumgebung, das heist, jeden Befehl den du interaktiv eingibst oder startest läuft in diesem Enviroment.

Die Shell die zur Aufführung der Cron-Jobs verwendet wird, durchläuft diese ganze Anmedeprozedur nicht, das heißt alles was dir an Umgebungsvariablen so schön vertraut ist, gibt es dort nicht oder ist leer und dann wird bei einigen ein einprogrammierter Defaultwert angenommen. Das geht schon mit der PATH Variable los, weshalb du die meisten Befehle dann schon mal mit vollem Path angeben musst.

Wenn du auf solche Variablen und Einstellungen in Cronjobs zurückgreifen willst, dann musst du solche Variablen in deinen Scripten die du dort verwendest, selbst setzten, bzw vor dem starten von Befehlen entsprechende Varablen für den Befehl erst setzen. Einige ganz wenige Umgebungsvariablen können auch global für alle Conjobs innerhalb der Crontab gesetzt werden. zB PATH

robi
 
Hey

Danke für deine Ausführung.
Hatte nicht gedacht das das so "tiefgreifend" ist.
Ist aber Einleuchtend.

cu Huflatisch

PS:
über cron kommt dieses echo
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
 
Hey

hier noch meine Lösung....
.. um deutsche Wochentagsnamen in den cron scripts verwenden zu können...

Code:
DAT=`LANG=de_DE date +%A`
echo $DAT

Ausgabe z.B.:
Montag

Die Variable direkt im Script zu setzen geht bei mir nicht. Ich muss den Befehl (date) mit der Variable ausführen.

cu
Huflatisch
 
Oben