On Mon, 23 Feb 2004, Thilo Gramlich wrote:
Hallo!
Am Montag, 23. Februar 2004 15:23 schrieb Matthias Dort:
Ich könnte diese Variable in der crontab explizit setzen. (Vielleicht deswegen war in den vorherigen postings auch mal von dem Wort "Variable setzen" die Rede und die Vorschläge, Unix- und Linux-Bücher zu lesen, kammen wahrscheinlich auch von daher. ) Allerdings hat diese so gesetzte Variable mit der in der Shell-Umgebung nicht mehr zu tun, obwohl die beiden einen denselben Namen haben könnten.
Die Umgebung, die cron benutzt, hat NICHTS mit der Umgebung zu tun, die von einer Shell genutzt wird; wie schon zuvor geschrieben ist sie ziemlich abgestrippt. Das ist auch so gewollt, da cron nicht den ganzen Ballast von langen Pfaden und Dutzenden von Umgebungsvariablen mit sich herumschleppen soll. ACK!
Ich vermute, es geht Dir darum, daß mit einer Änderung alle Skripte, auch die cron-gesteuerten, die gleichen Werte für eine oder mehrere Umgebungsvariablen haben. Dann schlage ich vor, daß Du die entsprechende(n) Variable(n) in eine separate Datei auslagerst, die von allen Skripten (incl. den Login-Skripten) einfach per source eingelesen wird. An der Umgebung des cron würde ich nichts ändern.
Diese Tage habe ich neben dem Lesen auch viele Versuche gemacht. `source <filename>` funktioniert nur dann, wenn der Variable einen konkreten Wert zugewiesen wird. Es klappt nur so zum Beispiel: <snip> nv:/tmp> cat cronenv.sh source /tmp/.profile_cron ; echo $myVar nv:/tmp> cat .profile_cron export myVar=/dir2 nv:/tmp> crontab -l # DO NOT EDIT THIS FILE - edit the master and reinstall. # (/tmp/crontab.10653 installed on Tue Feb 24 09:30:42 2004) # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $) 31 9 24 2 2 /tmp/cronenv.sh > /tmp/cronenv.out nv:/tmp> cat cronenv.out /dir2 <snap> Es klappt zwar; Das gleiche kann man auch erzielen, indem man die Zuweisung (myVar=/dir2) direkt in die crontab oder in das Skript schreibt! Mein urspruengliches Ziel ist aber, eine Variable in der Shell-Umgebung auch dem cron-Prozess bekannt zu machen. Etwa so z.B.: nv:/tmp> cat .profile_cron export myVar=$TESTVAR #wobei TESTVAR eine Variable in der Shell-Env ist. Das funktioniert leider nicht. Es scheint mir so, was shell kennt (in shell-env), cron aber nicht kennt (nicht in cron-env), lernt cron nicht kennen. Es sei denn, dass man die Variablenzuweisung in crontab schreibt. Also muss dem cron eine Variable aus der shell-Umgebung, über eine "Brücke" oder einen "Vermittler", bekannt gemacht werden.
Wenn es darum geht, ein Binary mit einer bestimmten Umgebung per cron zu starten, dann schreibe ein Skript, das die Umgebung setzt, dann das Programm startet, und lasse diese Skript vom cron starten.
Es ist nicht der Fall.
Thilo -- ------------------------------------------------------------------------------------ Thilo Gramlich Thilo (a dot) Gramlich (an at symbol) aktivanet (a dot) de
-- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com