2016-03-29 11 views
1

Ich arbeite auf einem ubuntu 14.0.4-Rechner.System.getenv ("TEST_HOME") gibt null zurück

ich eine Variable TEST_HOME in meiner .bashrc Datei

export TEST_HOME=/home/dev/code/test 

Als ich versuchte, echo $TEST_HOME von Terminal exportiert, kehrte er /home/dev/code/test

So weit, so gut.

Wenn ich versuche, aus Java-Code:

String value = System.getenv("TEST_HOME");

value ist null.

Fehle ich etwas hier?

+0

Damit sich diese Variable in der Java-Umgebung befindet, müssen Sie den Java-Prozess von einer Shell starten, in der Sie diese Variable festgelegt haben. Hast du? – folkol

+0

@folkol Ich habe diese Variable nicht in eine bestimmte Shell/Terminal exportiert. Ich fügte hinzu, es ist Eintrag in '.bashrc' –

+0

schließen und öffnen Sie Ihr Terminal zu aktualisieren. Bashrc definierte Änderungen – vikingsteve

Antwort

3

Das Erwähnen der Variablen in .bashrc funktioniert nur für Programme, die von Shell gestartet werden. Für systemweite Umgebungsvariablen erwähnen Sie es in /etc/environment.

Siehe Ubuntu Environment variables

+0

zu töten, nur die Pfadvariable ist dort in meinem '/ etc/environment'. Muss ich TEST_HOME =/home/dev/code/test in '/ etc/environment' exportieren? –

+0

ja. Andere Anwendungen können nur diese Variablen lesen – Rima

+0

Ich habe 'export TEST_HOME =/home/dev/code/test' in'/etc/environment' hinzugefügt. Jetzt gibt 'echo $ TEST_HOME' nichts zurück (ich habe das Terminal neu gestartet), das gleiche NULL vom Java-Code (ich habe Eclipse neu gestartet) Muss ich die Maschine neu starten? –

1

.bashrc nur Umgebungsvariable für bash gesetzt würde. Um es systemweit einzustellen, setzen Sie es in /etc/environment Datei.

Da Sie Eclipse verwenden, und es nicht innerhalb der Bash-Shell ausgeführt wird, erhält es nicht die Variable, die Sie festlegen. Wenn Sie Ihr Programm mit der Java-Befehlszeile in Ihrem Terminal ausführen, sollte es es bekommen.

Einstellungsvariable in /etc/environment würde es zur Eclipse verfügbar machen. Sie müssen den Computer neu starten, nachdem Sie /etc/environment aktualisiert haben.