Bash: Unterschied zwischen Script& Konsole bei Export,sed?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
hawkeye78
Beiträge: 430
Registriert: 10.09.2004 17:02:01
Wohnort: castrop-rauxel

Bash: Unterschied zwischen Script& Konsole bei Export,sed?

Beitrag von hawkeye78 » 15.07.2010 16:46:52

Hallo,

ich bin gerade ein klein bißchen verwirrt da ich alles andere als alter Hase im Thema Bash-Scripte bin und darum jedes Script für mich zu einem kleinen Kraftakt wird. Aber nachdem selbst die User im df.de Chat ein bißchen Ratlos sind, versuche ich nun mal hier mein Glück.
Um nun auf das eigentliche Problem zu sprechen zu kommen ich versuche aus der Umgebungsvariable PATH einen Pfad wieder zu entfernen, nach ein bißchen Suche mit google bin ich auch auf ein Codefragment gestossen, das dieses bewerkstelligen soll.
Nun ergibt sich allerdings der Sachverhalt das das Fragment wenn ich es auf der Konsole ausführe ohne Probleme läuft, es aber den Dienst verweigert sobald ich versuche das ganze in einem Bash-Script auszuführen. Auf der Konsole schaut das im moment so aus:

Code: Alles auswählen

[root@localhost steffen]# export PATH=/opt/ls_dyna/ls971_d_R5_0:$PATH
[root@localhost steffen]# echo $PATH
/opt/ls_dyna/ls971_d_R5_0:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/steffen/bin
[root@localhost steffen]# cat modify_path.sh 
#!/bin/bash
export PATH=$(echo $PATH | sed -e 's|/opt/ls_dyna/ls971_d_R5_0:||g');
[root@localhost steffen]# echo $PATH
/opt/ls_dyna/ls971_d_R5_0:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/steffen/bin
[root@localhost steffen]# export PATH=$(echo $PATH | sed -e 's|/opt/ls_dyna/ls971_d_R5_0:||g');
[root@localhost steffen]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/steffen/bin
[root@localhost steffen]# 
Ich bin leider alles andere als ein Experte was das Thema betrifft und wäre daher über einen kleinen Tipp was ich falsch mache sehr dankbar. Im übrigen scheint der Code von modify_path.sh zu funktionieren wenn ich ihn mit

Code: Alles auswählen

. ./modify_path.sh
aufrufe. Vielleicht hat ja jemand eine Idee woran es liegt ich wäre über einen entsprechenden Hinweis auf jeden Fall sehr dankbar.
viele Grüsse
Dan
I love deadlines. I like the whooshing sound they make as they fly by - Douglas Adams

Benutzeravatar
Meillo
Moderator
Beiträge: 9252
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Bash: Unterschied zwischen Script& Konsole bei Export,se

Beitrag von Meillo » 15.07.2010 17:12:15

Wenn du das Script aufrufst, dann läuft es in einer Subshell ab. Diese kann nichts in der Elter-Shell verändern.

Wenn du das Script mit dem Source-Kommando (.) einbindest, dann wird es in der aktuellen Shell ausgeführt. Damit kann die aktuelle Shell auch verändert werden.
Use ed once in a while!

sdh82
Beiträge: 160
Registriert: 07.10.2006 22:39:04

Re: Bash: Unterschied zwischen Script& Konsole bei Export,se

Beitrag von sdh82 » 16.07.2010 07:52:47

Warum verwendest du keine module environment http://modules.sourceforge.net/ ? Dies ist m.M.n. genau dafür gedacht. Wir haben dies auf unserem HPC Cluster installiert und fahren bisher immer ganz gut damit. Leider gibt es keine deb Pakete dafür, aber ./configure && make && make install tut glücklicherweise.

hawkeye78
Beiträge: 430
Registriert: 10.09.2004 17:02:01
Wohnort: castrop-rauxel

Re: Bash: Unterschied zwischen Script& Konsole bei Export,se

Beitrag von hawkeye78 » 16.07.2010 08:26:46

Hallo,

vielen Dank für euere Antworten, nach diesem Fehler hätte ich wohl noch 2 Monate suchen können und wäre nicht drauf gekommen. Allerdings stehe ich jetzt vor dem Problem das ich nicht weiß wie ich die Umgebungsvariable trotzdem gesetzt bekomme. Den das Code-Fragment im ersten Beitrag soll in Postinstall-Script mit einfließen das nach der Installation des Programms auch gleich die Umgebungsvariabeln richtig setzt bzw. erweitert.
Aus diesem Grund bin ich mir auch nicht sicher ob das mit modules von sourceforge so richtig funktioniert den dann müßte ich das ja entweder mit ins Paket oder noch schlimmer auf jedem Rechner übernehmen auf dem das Paket installiert werden soll. Alles in alle bin ich nun immer noch etwas Ratlos wie ich am besten das Problem löse vielleicht hat ja hier jemand etwas mehr Erfahrung mit dem Bauen von Paketen und kann mir einen guten Tipp geben.
Viele Grüsse
Dan
I love deadlines. I like the whooshing sound they make as they fly by - Douglas Adams

sdh82
Beiträge: 160
Registriert: 07.10.2006 22:39:04

Re: Bash: Unterschied zwischen Script& Konsole bei Export,se

Beitrag von sdh82 » 16.07.2010 08:48:55

Im Prinzip musst du ja nur auf einem Rechner installieren (make und co.) und dann die kompilierten zu anderen verschieben. Hier habe ich zum Glück Diskless Cluster so dass ich sie per nfs exportieren kann und passt.

Gutes altes Rat, ein Versuch ist immer Wert. ;)

Antworten