Переменная окружения установлена, но недоступна на сервере

У меня есть Java-программа, которая обращается к некоторым файлам свойств, чтобы она работала по пути, заданному в качестве переменной среды. Я установил путь с помощью команды экспорта. Файл Java jar, который является исполняемым файлом, помещен под другим пользователем, и поэтому я использую опцию sudo для запуска файла jar.

Моя проблема в том, что когда я устанавливаю переменную среды на тестовом сервере, программа работает нормально, однако, когда я делаю те же настройки конфигурации на производственном сервере и пытаюсь запустить его, он показывает, что путь задан для переменная окружения равна нулю.

Я знаю, что это как-то связано с доступом или, возможно, с другими настройками сервера, но, поскольку я новичок в UNIX, я не уверен, с чего начать.

Кто-нибудь может помочь?

1
задан 8 November 2012 в 04:36

2 ответа

Переменные окружения для пользователя могут быть установлены в ~ / .profile, однако, поскольку вы запускаете некоторые команды от имени root, это не будет работать, если вы также не измените корневой файл .profile.

Другой вариант - изменить файл / etc / profile, чтобы добавить пути, и это должно работать для всех пользователей.

0
ответ дан 8 November 2012 в 04:36

Места для проверки переменных среды

/etc/environment
/etc/profile
~/.profile
~/.bashrc

Если вы экспортируете переменную как userA, а затем запускаете jar с помощью sudo, эта переменная не будет скопирована в среду userA.

Быстрый обходной путь - запустить команду как:

PATH=$PATH:/your/directory asdf.jar

Это установит PATH только для этого вызова вашего jar-файла.

Вы также можете проверить, как выглядит среда этой программы, запустив ее pid и запустив cat /proc/<pid>/environ

Это покажет вам все переменные среды, доступные вашей программе.

0
ответ дан 8 November 2012 в 04:36

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

Похожие вопросы: