Java System.getEnv()

В Mac OSX и в Linux CentOS я вставляю новую переменную системной среды (например, "MYAPP"), используя.bashrc & .bash_profile. Я даже перезапустил свой ноутбук (Mac) и мой сервер (Linux).

Когда я использую командную строку "env", эта переменная среды показала правильное значение. Но почему-то каждый раз, когда я пытаюсь получить его в приложении Java (настольном приложении, веб-приложении, EJB или сервлете, любом другом приложении Java) в Mac или Linux, эта переменная среды ("MYAPP") не извлекается.

Я попытался перебрать все переменные окружения, которые может извлечь Java, и оказалось, что он извлекает все переменные окружения, кроме "MYAPP". Это очень странно.

Кто-нибудь знает, как решить эту проблему?

4 ответа

После определения и экспорта переменной среды. Запустите вашу IDE из того же терминала.

Ты export MYAPP=...? Экспорт переменной делает ее доступной для дочерних процессов, например, для запуска java вашей оболочкой.

В Linux, если вы только установите переменную (или экспортируете ее) в сеансе bash, она будет доступна для своего рода "вспомогательного" сеанса, который доступен только для только что выполненной команды, и ничего больше.

Вы, вероятно, могли бы использовать оператор точки в bash (также называемый командой "source"). Со страницы:

Когда скрипт запускается с использованием `source', он запускается в существующей оболочке, любые переменные, созданные или измененные скриптом, останутся доступными после его завершения.

Так что вы можете попробовать сделать. экспортируйте VARIABLE= значение, а затем запустите вашу Java-программу. Это похоже на установку переменной в терминале Windows, а затем открытие нового терминала и ожидание появления env var. Не будет

Таким образом, вы говорите bash: "эта команда должна быть доступна в этом конкретном сеансе (процесс сеанса)". В противном случае вы говорите ему: "установите этот env var для сеанса bash, который закончится после того, как я запустил эту команду экспорта", поэтому он не будет существовать, когда вы запустите вашу Java-программу.

Попробуй написать

"$System.env.STOREPWD"

Другие вопросы по тегам