"export" in shell scripts [Gelöst]

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

"export" in shell scripts [Gelöst]

Beitrag von jmar83 » 10.05.2019 18:48:34

Hallo zusammen

Das läuft nicht, mit der ohne echo spielt keine Rolle:

Code: Alles auswählen

#!/bin/bash
chmod +x ./buildvars.sh;
set -x > /dev/null 2>&1; # Define script execution output behavior
echo export UPX_LUADIR=/root/lua-5.1.1;
echo export UPX_LZMADIR=/root/lzma1509;
echo export UPX_LZMA_VERSION=0x1509;
echo export UPX_UCLDIR=/root/ucl-1.03;
exit 0;
-> https://stackoverflow.com/questions/110 ... ell-script

...was ist in diesem Fall zu tun? Vielen Dank für die Feedbacks.
Zuletzt geändert von jmar83 am 09.12.2019 16:34:17, insgesamt 1-mal geändert.
Freundliche Grüsse, Jan

Benutzeravatar
heisenberg
Beiträge: 3542
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: "export" in shell scripts

Beitrag von heisenberg » 10.05.2019 18:54:43

Ich verstehe weder, was Du machen möchtest, noch was Dein Fehler, noch was Deine Frage ist.

Bitte nochmal von vorn beginnen.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

Re: "export" in shell scripts

Beitrag von jmar83 » 10.05.2019 19:51:13

Hallo

Danke für die Nachfrage! ;-) War ein bisschen schnell...

Also:

- Wenn ich unter der Konsole "export..." eingebe, dann wird die Variable korrekt hinterlegt.

- Wenn ich das unter einen Shell-/Bashscript tue, dann scheint es diese nicht korrekt zu hinterlegen... Befindet sich die Variable dann in einem anderen "Scope", also z.B. nur innerhalb des Scripts?


...unter https://stackoverflow.com/questions/110 ... ell-script habe ich dann gelesen, dass man bei "export" in Shell-/Bashscripts noch "echo" vorne anfügen muss - aber trotzdem scheint's irgendwie nicht zu funktionieren...
Freundliche Grüsse, Jan

Benutzeravatar
MSfree
Beiträge: 10752
Registriert: 25.09.2007 19:59:30

Re: "export" in shell scripts

Beitrag von MSfree » 10.05.2019 19:55:47

jmar83 hat geschrieben: ↑ zum Beitrag ↑
10.05.2019 19:51:13
- Wenn ich unter der Konsole "export..." eingebe, dann wird die Variable korrekt hinterlegt.
In der Konsole läuft ja auch eine Shell, die den export-Befehl direkt ausführt. Damit ist die gesetzte Variable Bestandteil der in der Konsole laufenden Shell.
- Wenn ich das unter einen Shell-/Bashscript tue, dann scheint es diese nicht korrekt zu hinterlegen... Befindet sich die Variable dann in einem anderen "Scope", also z.B. nur innerhalb des Scripts?[/b]
Logisch. For dein Shellskript wird eine neue Shell gestartet, in der die Variablen entsprechend gesetzt werden. Die Parent-Shell, die in der Konsole läuft, bekommt davon natürlich nichts mit. Beim Beenden des Shellscripts endet dann auch die neue Shell.

Wenn du Variablen über ein Skript einlesen willst, geht das mit "." (Punkt). Beispiel

Code: Alles auswählen

. NameDesShellSkripts
Damit wird das Skript von der Shell in der Konsole direkt ausgeführt.

pferdefreund
Beiträge: 3791
Registriert: 26.02.2009 14:35:56

Re: "export" in shell scripts

Beitrag von pferdefreund » 13.05.2019 07:25:02

Mich wundern die echo export Anweisungen. Wenn ich Umgebungsvariable setze mache ich das immer direkt -
also export MEINEAVARIABLE1="/usr/local/lib/" oder so. Echo gibt den Wert nach dem echo-Befehl einfach nur auf der Konsole aus.

jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

Re: "export" in shell scripts

Beitrag von jmar83 » 13.05.2019 12:14:37

Hallo zusammen
". NameDesShellSkripts"
Geht leider auch nicht:

Code: Alles auswählen

root@localhost:~# bash . ./buildvars.sh
.: .: Is a directory
root@localhost:~#
Freundliche Grüsse, Jan

jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

Re: "export" in shell scripts

Beitrag von jmar83 » 13.05.2019 12:23:41

...und wenn ich ". buildvars.sh" oder ". ./buildvars.sh" eingebe, dann werde ich ausgeloggt. (Sehe das nur wenn ich direkt mit dem Monitor am Gerät bin, wenn ich eine SSH-Konsole verwende, dann schliesst sich diese)
Freundliche Grüsse, Jan

jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

Re: "export" in shell scripts

Beitrag von jmar83 » 13.05.2019 12:34:20

"...und wenn ich ". buildvars.sh" oder ". ./buildvars.sh" eingebe, dann werde ich ausgeloggt. (Sehe das nur wenn ich direkt mit dem Monitor am Gerät bin, wenn ich eine SSH-Konsole verwende, dann schliesst sich diese)"
...das Problem war mein "exit 0;" am Ende des Skripts.

Und noch was: Damit scheint es nun zu gehen, in Kombination mit ". buildvars.sh" oder ". ./buildvars.sh":

Code: Alles auswählen


#!/bin/bash
chmod +x ./buildvars.sh;
set -x > /dev/null 2>&1;  # Define script execution output behavior

#echo export UPX_LUADIR=/root/lua-5.1.1;
#echo export UPX_LZMADIR=/root/lzma1509;
#echo export UPX_LZMA_VERSION=0x1509;
#echo export UPX_UCLDIR=/root/ucl-1.03;

export UPX_LUADIR=/root/lua-5.1.1;
export UPX_LZMADIR=/root/lzma1509;
export UPX_LZMA_VERSION=0x1509;
export UPX_UCLDIR=/root/ucl-1.03;

#UPX_LUADIR=/root/lua-5.1.1;
#export UPX_LUADIR;

#UPX_LZMADIR=/root/lzma1509;
#export UPX_LZMADIR;

#UPX_LZMA_VERSION=0x1509;
#export UPX_LZMA_VERSION;

#UPX_UCLDIR=/root/ucl-1.03;
#export UPX_UCLDIR;

#UPX_LUADIR=$UPX_LUADIR:/root/lua-5.1.1;
#export UPX_LUADIR;

#UPX_LZMADIR=$UPX_LZMADIR:/root/lzma1509;
#export UPX_LZMADIR;

#UPX_LZMA_VERSION=$UPX_LZMA_VERSION:0x1509;
#export UPX_LZMA_VERSION;

#UPX_UCLDIR=$UPX_UCLDIR:/root/ucl-1.03;
#export UPX_UCLDIR;
ABER: Die Variablen scheinen offenbar nur pro SSH-Session zu gelten, wenn ich ein anderes Fenster offen habe, dann scheint das dort nicht zu gelten. Jedenfalls gibt "set | grep UPX_" dann nix aus...
Freundliche Grüsse, Jan

Benutzeravatar
heisenberg
Beiträge: 3542
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: "export" in shell scripts

Beitrag von heisenberg » 13.05.2019 12:36:41

jmar83 hat geschrieben: ↑ zum Beitrag ↑
13.05.2019 12:34:20
ABER: Die Variablen scheinen offenbar nur pro SSH-Session zu gelten, wenn ich ein anderes Fenster offen habe, dann scheint das dort nicht zu gelten. Jedenfalls gibt "set | grep UPX_" dann nix aus...
Natürlich. Eine andere Shell/SSH-Sitzung ist ein anderer Prozess. Die Variablen werden nur im aktuellen Prozess gesetzt.

Eine Möglichkeit ist eine externe Datei mit der Variablendefinition, die Du in jedem Script, dass diese benötigt vorher ausliest.(mit dem . - Kommando, auch "sourcen" genannt)
Jede Rohheit hat ihren Ursprung in einer Schwäche.

jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

Re: "export" in shell scripts

Beitrag von jmar83 » 13.05.2019 17:52:14

Danke für den Tipp!! :-)
Freundliche Grüsse, Jan

Antworten