export nach oben

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
gmv
Beiträge: 29
Registriert: 29.10.2005 12:55:55
Wohnort: Wien

export nach oben

Beitrag von gmv » 05.04.2006 16:03:43

Hallo!

Vielleicht hatte schon jemand ein ähnliches Problem und kann mir helfen. Ich hätte gern ein kleines Shell-Skript mit dem ich Environmentvariablen setzen kann. Im speziellen will ich mir die Tipperei für http_proxy= und ftp_proxy= sparen.
Wenn ich diese in ein skript gebe und exportiere gelten sie jedoch nicht für die aufrufende Shell.

Ich will diese Variablen jedoch nicht immer gesetzt haben, da ich mit dem Laptop immer in verschiedenen Netzwerkumgebungen bin.

lg
Georg

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Re: export nach oben

Beitrag von roli » 05.04.2006 16:24:31

Hi gmv,
gmv hat geschrieben: Wenn ich diese in ein skript gebe und exportiere gelten sie jedoch nicht für die aufrufende Shell.
schon mal versucht das script mit ". ./setze_meine_Variable.sh" aufzurufen?

<edit>Eine andere Alternative waere vielleicht die Variablen in die "~/.profile" bzw. "~/.bash_rc" zu schreiben.
Ich hab's mir gerade noch mal durchgelesen, das ware ja gerade was du nicht wolltest</edit>
Zuletzt geändert von roli am 05.04.2006 16:26:31, insgesamt 1-mal geändert.
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

Benutzeravatar
seep
Beiträge: 544
Registriert: 31.10.2004 14:21:08
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: HSK

Beitrag von seep » 05.04.2006 16:24:36

Es ist IMHO nicht möglich, daß ein Programm das Parent-Environment verändert, da Unix beim Starten eines Prozesses einen Zeiger auf die Kopie des Environments übergibt und keine Referenz. Sprich ein Child-Prozeß - was in Deinem Falle ja eine Bash wäre, die das kleine Script ausführt - kann lediglich die ihm zur Verfügung gestellte Kopie verändern, jedoch nicht das höherliegende "Original".

edit: rolis Version funktioniert, da sie ja das aktuelle Env verändert, ist aber eine Lösung für Dein (gmv) Problem.

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 05.04.2006 17:34:16

Du kannst in der ".bashrc" eine Funktion erstellen, die dir die Umgebungsvariablen setzt. Das bleibt auch in der aktuellen Shell erhalten.

gmv
Beiträge: 29
Registriert: 29.10.2005 12:55:55
Wohnort: Wien

Re: export nach oben

Beitrag von gmv » 06.04.2006 09:07:51

roli hat geschrieben:schon mal versucht das script mit ". ./setze_meine_Variable.sh" aufzurufen?
Super! Danke! Das funktioniert! :D :D :D

Ist ". <script>" irgendeine geheimnisvolle Bash-Funktion?

lg

Benutzeravatar
ScyTheMan
Beiträge: 363
Registriert: 23.10.2004 15:09:14
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von ScyTheMan » 06.04.2006 10:23:18

Soweit ich weiss ist das nicht bash-spezifisch, im Gegensatz zu "source <script>" (was genau das gleiche machen würde).

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 06.04.2006 10:38:59

Der . steht fuer nichts anderes als source und heisst, dass die Shell die angegebene Datei einlesen und ausfuehren soll. Naeheres findest in der Manpage zur bash.

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Re: export nach oben

Beitrag von roli » 06.04.2006 12:13:42

Hi,
gmv hat geschrieben:Ist ". <script>" irgendeine geheimnisvolle Bash-Funktion?
Fuer mich nicht, kenne ich schon seit ... fast ewig :wink:
Nachlesen kannst du dazu, wie auch zu vielem anderen, was bash/Shell Scripting angeht in Advanced Bash-Scripting Guide: Internal Commands and Builtins oder natuerlich im Manual.
Interessant ist auf der Seite fuer das Problem:
source, . (dot command)

This command, when invoked from the command line, executes a script. Within a script, a source file-name loads the file file-name. Sourcing a file (dot-command) imports code into the script, appending to the script (same effect as the #include directive in a C program). The net result is the same as if the "sourced" lines of code were physically present in the body of the script. This is useful in situations when multiple scripts use a common data file or function library.
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

gmv
Beiträge: 29
Registriert: 29.10.2005 12:55:55
Wohnort: Wien

Beitrag von gmv » 06.04.2006 13:32:14

Alles klar!

Danke nochmal an alle. :D

Antworten