Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Umgebung setzen mit BASH-Script ?

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Sonstiges
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Henry G.
Gast





BeitragVerfasst am: 05. Apr 2001 22:21   Titel: Umgebung setzen mit BASH-Script ?

Wie kann mit einem Shell-Script Aufruf in meiner Konsole Umgebungsvariablen definieren ?

In der csh/tcsh kann ich mit source scriptname Umgebungsvariablen sourcen -- nur wie mache ich das selbe mit der BASH ?

----8<----
# javarc
set JAVA_HOME = ( /usr/lib/java )
set CLASSPATH = ( .:./java/lib/jdom.jar )
----8<----
Nach "source javarc" sind die beiden Umgebungsvariablen gesetzt und können verwendet werden.


Innerhalb eines BASH Scripts funktionierts ja wenn, nur wenn ich eine Bash-Version von javarc aufrufe sind nur für Befehle innerhalb des Scriptes die Variablen gesetzt. Wenn ich das Scripte von einem anderen Bash-Script auf mit ". javarc" aufrufe und die Variablen exportiere dann funktionierts auch nur so lange das Script läuft. Nach Beendigung des Scripts sind die Variablen wieder nicht definiert bzw. auf ihrem ursprünglichen Wert.

Was mache ich falsch ?

Unter DOS/Windows kann ich ja auch BATCH Dateien erstellen die an der DOS-Konsole aufgerufen mir die Umgebungsvariable setzen.
 

Thomas Mitzkat
Gast





BeitragVerfasst am: 05. Apr 2001 23:42   Titel: Re: Umgebung setzen mit BASH-Script ?

export VARIABLE=wert
 

Henry G.
Gast





BeitragVerfasst am: 06. Apr 2001 0:51   Titel: Re: Umgebung setzen mit BASH-Script ?

Ja so habe ich es mir auch gedacht, nur funktioniert das nicht.

----8<----
#!/bin/sh
# script: javarc.sh
export CLASSPATH=.:./java/lib/jdom.jar
echo "CLASSPATH ist $CLASSPATH"
----8<----

$ ./javarc.sh
CLASSPATH ist .:./java/lib/jdom.jar
$ echo $CLASSPATH

$

Das Script setzt die Variable, aber nach Beendigung des Scripts ist die Variable weg. Die mit export deklarierten Variablen scheinen nur für die Laufzeit des Scripts zu "leben" und dann auch nur für sich und für alle Kind-Shells, die geöffnet werden.

Was ich aber machen möchte ist, dass bei Scriptaufruf (= starten einer Kind-Shell) die Variable in der Vater-Shell (aus Sicht der Kind-Shell) also in meiner aktuellen Login-Shell gesetzt wird. So was wie die Variablen in der .profile nur eben als Shell-Script, das ich bei Bedarf aufrufen kann um mir die Umgebungsvariablen zu setzen.

Mit der csh/tcsh scheint es ja auch zu gehen:

----8<----
# script javarc.csh
set CLASSPATH = ( .:/home/gt003963/src/java/lib/jdom.jar )
----8<----

$ echo $CLASSPATH
CLASSPATH: Undefinierte Variable.
$ source javarc.csh
$ echo $CLASSPATH
.:/home/gt003963/src/java/lib/jdom.jar
$

Na also. Bei der csh geht's ja nur halt möchte ich hierzu nicht immer in eine csh wechseln nur um das ausführen zu können.
 

Thomas Mitzkat
Gast





BeitragVerfasst am: 06. Apr 2001 10:27   Titel: Re: Umgebung setzen mit BASH-Script ?

Du willst die Variable in der "bash" haben und rufst "sh" auf???? Im Übrigen kannst Du systemweite Variblen in /etc/profile setzen.

----8<----
#!/bin/bash
# script: javarc.sh
export CLASSPATH=".:./java/lib/jdom.jar"
echo "CLASSPATH ist $CLASSPATH"
----8<----
 

Henry G.
Gast





BeitragVerfasst am: 06. Apr 2001 12:22   Titel: Re: Umgebung setzen mit BASH-Script ?

/bin/sh ist nur ein SymLink auf /bin/bash

aber auch mit Angabe von #!/bin/bash läuft das Script nicht so wie gewollt.

so siehts zur Zeit aus:

-LOGIN
+---BASH
! javarc.sh aufrufen
+---javarc.sh
! ! startet BASH
! ! setzt CLASSPATH Variable
! ! echo $CLASSPATH (innerhalb des Scriptes) zeigt Wert der Variable
! ! BASH-Prozess beendet sich
!
! CLASSPATH Variable ist hier undefiniert
!

und so sollte es eigentlich werden:

-LOGIN
+---BASH <----------------------------------------------------------
! javarc.sh aufrufen !
+---javarc.sh !
! ! startet BASH !
! ! setzt CLASSPATH Variable !
! ! CLASSPATH Variable wird in die Vatershell durchgereicht ---
! ! echo $CLASSPATH (innerhalb des Scriptes) zeigt Wert der Variable
! ! BASH-Prozess beendet sich
!
! CLASSPATH Variable ist hier definiert
! da da Script die Variable ja in der Vatershell gesetzt hat.
!
 

schlops



Anmeldungsdatum: 17.02.2000
Beiträge: 102

BeitragVerfasst am: 06. Apr 2001 13:14   Titel: Re: Umgebung setzen mit BASH-Script ?

Sers!

Den Tip mit EXPORT hast Du ja schon gekriegt, und den naechsten Tip hast Du schon selbst geschrieben :
source javarc.sh
Damit sollte es gehen.

Stay Rude
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

Henry G.
Gast





BeitragVerfasst am: 06. Apr 2001 14:33   Titel: Re: Umgebung setzen mit BASH-Script ?

Danke

ich hab' die ganze Zeit versucht die Variable zu behalten, wenn ich das Script *ausführe*;
Dass ich das wie bei einer csh auch, per "source <scriptname>" aufrufen kann wusste ich nicht.

In den Beispielscripten die ich mir angeschaut habe, wird ein anderes Scripte nie mit "source <scriptname>" eingebunden sondern immer nur mit ". <scriptname>".
 

schlops



Anmeldungsdatum: 17.02.2000
Beiträge: 102

BeitragVerfasst am: 06. Apr 2001 18:28   Titel: Re: Umgebung setzen mit BASH-Script ?

Hehe, da Informatiker schreibfaule Menschen sind , geht der "." natürlich auch, ist nur ne Abk. für source.

Stay Rude!
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

Thomas Mitzkat
Gast





BeitragVerfasst am: 06. Apr 2001 21:19   Titel: Re: Umgebung setzen mit BASH-Script ?

Super, ich hab beim Übertragen der SuSE-7.1-LiveEval auf die Festplatte den MC auf "follow Symlinks" stehen gehabt, daher war "sh" kein link.

Die Variablen werden nur den Childprozessen vereerbt?!
 

heinrich



Anmeldungsdatum: 22.09.1999
Beiträge: 219
Wohnort: N49.137 E8.544

BeitragVerfasst am: 07. Apr 2001 0:29   Titel: Re: Umgebung setzen mit BASH-Script ?

> Die Variablen werden nur den Childprozessen vereerbt?!

Scheinbar ja.
Nach beenden des Childprozessen sind auch alle Variablen die der Childprozess erzeugt hat wieder undefiniert. (Siehe auch die ein Zeichnung von Henry ein paar Postings oben drüber).
 
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name

Jochen
Gast





BeitragVerfasst am: 07. Apr 2001 20:54   Titel: Re: Umgebung setzen mit BASH-Script ?

Nicht nur scheinbar .

Es ist ganz einfach: Die Environment-Variablen (alle in der sh/back/ksh mittels "export" exportierten oder in der csh/tcsh mit "setenv" gesetzten) sind Bestandteil des Prozesses. Lasse ich ein neues Kommando ausführen, wird dafür ein neuer Prozess gestartet, der ererbt das Environment vom Elternprozess (häufig eine Shell). Werden nun im Kindprozess irgendwelche Environment-Variablen gesetzt, rührt das den Elternprozess überhaupt nicht. Wird der Kindprozess dann irgendwann abgebaut, sind damit auch die in diesem Prozess definierten Environment-Variablen weg.

Das "source"-Kommando (bzw. ".", funktioniert auch in der sh) sorgt lediglich dafür, dass das angegebene Skript nicht von einen Kindprozess ausgeführt wird (wie üblich), sondern von der aktiven Shell selbst. Und dann werden die Variablen im Environment der aktiven Shell gesetzt und sind nach Abarbeitung des Skriptes verfügbar. Allerdings sollte in einem Skript zum Sourcen möglichst kein "exit" auftauchen.
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Sonstiges Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy