2016-03-29 4 views
1

Я работаю над машиной ubuntu 14.0.4.System.getenv ("TEST_HOME") возвращает null

Я экспортировал переменную TEST_HOME в моем .bashrc файл с помощью

export TEST_HOME=/home/dev/code/test 

Когда я попытался echo $TEST_HOME от терминала, он вернулся /home/dev/code/test

До сих пор, так хорошо.

Когда я пытаюсь из Java кода:

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

value равна нулю.

Я что-то упустил?

+0

Чтобы эта переменная была в среде Java, вам нужно будет запустить процесс Java из оболочки, где у вас есть эта переменная. Не так ли? – folkol

+0

@folkol Я не экспортировал эту переменную в конкретную оболочку/терминал. Я добавил, что это запись в '.bashrc' –

+0

закрыть и снова открыть терминал для обновления .bashrc определенные изменения – vikingsteve

ответ

3

Упоминание переменной в .bashrc будет работать только для программ, запущенных из оболочки. Для системных переменных среды упоминайте об этом в /etc/environment.

См Ubuntu Environment variables

+0

В настоящее время переменная path существует в моей '/ etc/environment'. Мне нужно «экспортировать TEST_HOME =/home/dev/code/test» в '/ etc/environment'? –

+0

Да. Другие приложения могут читать только эти переменные. – Rima

+0

Я добавил 'export TEST_HOME =/home/dev/code/test' в'/etc/environment'. Теперь 'echo $ TEST_HOME' ничего не возвращает (я перезапустил терминал), тот же null из кода Java (я перезапустил eclipse) Нужно ли мне перезагружать компьютер для этого? –

1

.bashrc будет установить переменные окружения только для Баш оболочки. Чтобы установить его в системе, установите его в файле /etc/environment.

Поскольку вы используете eclipse, и он не запускается в оболочке bash, он не получает переменную, которую вы устанавливаете. Если вы запускаете свою программу с помощью java-командной строки в своем терминале, тогда она должна ее получить.

Установка переменной в /etc/environment сделает ее доступной для затмения. Вам необходимо перезагрузить компьютер после обновления /etc/environment.

Смежные вопросы