2010-06-17 2 views
12

Ich habe einige Proxy-Einstellungen, die ich nur gelegentlich einschalten will, so will ich nicht, sie in meinem ~/.bash_profile setzen. Ich versuchte, sich direkt in ~/bin/set_proxy_env.sh setzen, und fügte hinzu ~/bin meine PATH und chmod +x das Skript ing aber wenn das Skript ausgeführt wird, die Variablen kleben nicht in meiner Schale. Weiß jemand, wie man sie für den Rest der Shell-Sitzung hält?Wie setze ich Bash-Umgebungsvariablen aus einem Skript?

Antwort

18

Verwenden eines von:

source <file> 

. <file> 
+0

dass Herr, ist Geld in der Bank – tofutim

14

Im Skript verwenden

export varname=value

und führen auch das Skript mit:

source set_proxy_env.sh.

Das Schlüsselwort export sorgt die Variable für die automatische Aufnahme in der Umgebung der anschließend ausgeführten Befehle markiert. Mit source ein Skript auszuführen beginnt es mit der vorliegenden Schale stattdessen einen temporären für das Skript von starten.

+0

Ich hatte das 'export'; Es war die Quelle, die ich vermisste. –

4

Sie dies versuchen Haben:

. ~/bin/set_proxy_env.sh

es von selbst laufen öffnet sich ein separates Sub-Shell (glaube ich) und setzt die dort variabel. Aber dann ist die Bindung verloren, nachdem Sie in Ihre Shell zurückgekehrt sind. Der Punkt auf der Vorderseite sagt ihm, dass er innerhalb derselben Shell laufen soll.

Auch vergessen Sie nicht zu export die Variablen, die Sie wie so brauchen: export MYVAR=value

+0

Es ist nicht notwendig, jede Variable zu exportieren. Nur diejenigen, die für untergeordnete Prozesse sichtbar sein müssen. –

+0

Ah ja, das ist was ich meinte :) –