PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : probleme mit Variablen setzen und crontab



orion
12.05.05, 16:53
Tja ich hab da ein kleines aber nerviges problem mit ein paar Variablen.
Ich hab vor einem Monat Java auf meinem System installiert da ich es für ein newsgroup reader gebraucht habe welcher ein Webinterface hat. Nun hatte ich Probleme mit den Variablen:
JAVA_HOME=/usr/local/j2re1.4.2_08/
PATH=$PATH:/usr/local/j2re1.4.2_08/bin

Also hab ich wie im Tutorial aus diesem Forum über Java diese beiden Variablen in ~/.bashrc hinzugefügt mittels:
export JAVA_HOME=/usr/local/j2re1.4.2_08/
export PATH=$PATH:/usr/local/j2re1.4.2_08/bin

Nun beim root hat das auch funktioniert, aber bei meinem user den ich habe hat das nicht so hingehaut. ich musste jedesmal die Variablen per Hand hinzufügen weil er diese anscheinend nicht ovn .bashrc übernommen hat.
Also hab ich dann die Variablen Systemweit installiert indem ich diese 2 Zeilen in /etc/profiles hinzugefügt habe. Somit hab ich mir gedacht ist das Problem gelöst.

nun wollte ich das sich der Newsreader automatisch mittels crontab jeden Tag startet. Das Programm lässt sich über ein Shell Script starteten. Ich hab also mal zu testzwecke über meinen User Account mittels "crontab -e" die zeile hinzugefügt: "* * * * * /pfad/zum/script.sh"
Nun bekam ich dann per system mail das er die Variablen nicht finde konnte bzw das er Java nicht finden konnte.
Dann ist mir aufgefallen das in /etc/crontab die Variable "PATH" auch extra definiert wird. Ich weiss zwar nicht wieso das so ist, aber ich hab dann versucht bei der Variable PATH in /etc/crontab den Javapfad auch hinzuzufügen, aber das hat auch nichts geholfen. könnt ihr mir da igendwie helfen?

suck
13.05.05, 04:41
Du könntest die Variablendefinitionen in den Aufruf des Progs mithineinnehmen:

anstatt "/la/la/prog" also "VAR1=lalelu /la/la/prog"

Ich bin mir nicht sicher, ob das klappt. Sollte es nicht funzen, würde ein Script weiterhelfen, welches dann seinerseits genanntes aufruft - dann würde cron nur das Script aufrufen (erste Zeile des Scripts sollte "#!/bin/sh" sein).

Gruss..

orion
14.05.05, 16:03
hab das versucht, bei crontab gleich die Variablen reinzuhauen, ist aber nicht gegangen dann hab ich ein mini skript geschrieben wo die Variablen wie gesagt auch definiert werden:


#!/bin/sh
JAVA_HOME=/usr/local/j2re1.4.2_08/
PATH=$PATH:/usr/local/j2re1.4.2_08/bin
cd /home/orion/ninan-0.8.1/
./ninancore.sh


aber ich bekomm dann wieder eine mail wo die Fehlermeldung drinsteht das java nicht gefunden wurde.

ABgesehen davon versteh ich aber auch nicht wieso es nicht einfach geht wenn ich in ~/.bashrc die Variable definier? Theoretisch sollte es ja so funktionieren oder?

suck
14.05.05, 21:34
Nutze die Syntax "export VAR1="lalelu" damit die Variablen auch an die Kindprozesse weitergegeben werden. Der Aufruf von "./ninancore.sh" startet nämlich eine neue Shell.

orion
14.05.05, 23:27
ah, verstehe. Jetzt funktioniert es auch über crontab.
Aber ich frag mich noch immer wieso die Variable nicht über .bashrc definiert wird?! :confused:

suck
14.05.05, 23:37
"man bash" sagt mitunter: When an interactive shell that is not a login shell is started, bash reads and executes commands from ~/.bashrc, if that file exists.

Wenn dein System "ordentlich" eingerichtet ist, handelt es sich bei dir um eine Login-Shell. Deshalb wird die .bashrc nicht gelesen. /etc/profile könte helfen! ..aber cron interessiert glaub(!) ich keine der Dateien! (es kommt drauf an, wie bzw. woraus es gestartet wird)