2016-03-29 65 views
1

我正在使用ubuntu 14.0.4機器。System.getenv(「TEST_HOME」)返回null

我在.bashrc文件中使用

export TEST_HOME=/home/dev/code/test 

當我試圖從echo $TEST_HOME終端導出的變量TEST_HOME,它返回/home/dev/code/test

到目前爲止,一切都很好。

當我從Java代碼嘗試:

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

value爲空。

我在這裏錯過了什麼嗎?

+0

要使該變量位於Java環境中,必須從具有該變量集的shell啓動Java進程。你是否? – folkol

+0

@folkol我沒有在特定的shell /終端中導出這個變量。我添加了它在'.bashrc'的條目 –

+0

關閉並重新打開您的終端刷新.bashrc定義的變化 – vikingsteve

回答

3

提及.bashrc中的變量只適用於從shell啓動的程序。對於系統範圍的環境變量,請在/etc/environment中提及。

參考Ubuntu Environment variables

+0

當前只有路徑變量存在於我的'/ etc/environment'中。我需要在'/ etc/environment'中導出TEST_HOME =/home/dev/code/test'嗎? –

+0

是的。其他應用程序只能讀取這些變量 – Rima

+0

我在'/ etc/environment'中添加了'export TEST_HOME =/home/dev/code/test'。現在'echo $ TEST_HOME'沒有返回任何東西(我重新啓動終端),Java代碼中的相同null(我重新啓動了eclipse)我是否需要爲此重新啓動機器? –

1

.bashrc將只對bash shell中設置環境變量。要將其設置爲系統範圍,請將其設置爲/etc/environment文件。

由於您使用的是eclipse,並且它不在bash shell中運行,所以它沒有獲取您正在設置的變量。如果你在你的終端中使用java命令行運行你的程序,那麼它應該得到它。

設置變量/etc/environment將使其可用於日食。更新/etc/environment後,您將需要重新啓動機器。