У меня есть Java-программа, которая обращается к некоторым файлам свойств, чтобы она работала по пути, заданному в качестве переменной среды. Я установил путь с помощью команды экспорта. Файл Java jar
, который является исполняемым файлом, помещен под другим пользователем, и поэтому я использую опцию sudo
для запуска файла jar
.
Моя проблема в том, что когда я устанавливаю переменную среды на тестовом сервере, программа работает нормально, однако, когда я делаю те же настройки конфигурации на производственном сервере и пытаюсь запустить его, он показывает, что путь задан для переменная окружения равна нулю.
Я знаю, что это как-то связано с доступом или, возможно, с другими настройками сервера, но, поскольку я новичок в UNIX, я не уверен, с чего начать.
Кто-нибудь может помочь?
Переменные окружения для пользователя могут быть установлены в ~ / .profile, однако, поскольку вы запускаете некоторые команды от имени root, это не будет работать, если вы также не измените корневой файл .profile.
Другой вариант - изменить файл / etc / profile, чтобы добавить пути, и это должно работать для всех пользователей.
Места для проверки переменных среды
/etc/environment
/etc/profile
~/.profile
~/.bashrc
Если вы экспортируете переменную как userA, а затем запускаете jar с помощью sudo, эта переменная не будет скопирована в среду userA.
Быстрый обходной путь - запустить команду как:
PATH=$PATH:/your/directory asdf.jar
Это установит PATH только для этого вызова вашего jar-файла.
Вы также можете проверить, как выглядит среда этой программы, запустив ее pid и запустив cat /proc/<pid>/environ
Это покажет вам все переменные среды, доступные вашей программе.