Я устанавливаю Tomcat на машину RHEL5, и у меня возникли проблемы с его запуском, потому что JAVA_HOME не установлен. Tomcat начинает использовать
sudo /sbin/service tomcat start
и работает под пользователем tomcat
. Когда я вхожу в систему как я или как пользователь root, JAVA_HOME
правильно установлен (используя /etc/profile.d/java.sh
). Я предполагаю, что это не проходит должным образом через sudo.
Может ли кто-нибудь указать мне направление изменения, которое мне нужно внести, чтобы эта переменная прошла через sudo или была подобрана tomcat
пользователь? Я считаю, что есть несколько способов.
заранее спасибо
Богатый
Один из способов сделать это - добавить JAVA_HOME в сценарий запуска tomcat, который должен находиться в /etc/init.d
Пытаться sudo -E <your command>
. Это сохраняет (большую часть) окружающую среду. Видеть man sudo
Чтобы получить больше информации.
Ответ Мазианни правильный.
Больше информации:
Для неинтерактивной оболочки /etc/profile
не читается и поэтому /etc/profile.d/*.sh
тоже не читаются.
JAVA_HOME
устанавливается в вашей интерактивной оболочке. sudo
удаляет большинство переменных среды. Вы можете настроить env_keep
в /etc/sudoers
позволять JAVA_HOME
через, но если вы когда-нибудь настроите tomcat для автоматического запуска, этот метод больше не будет работать. (Следовательно, решение Мазианни является лучшим.)
Вы можете временно установить переменную перед выполнением в BASH. Это будет доступно следующей команде.
JAVA_HOME=/path/to/java sudo /sbin/service tomcat start
Читать man sudoers
.
С помощью visudo
(никогда не редактировать /etc/sudoers
напрямую!), вы можете установить !env_reset
чтобы глобально разрешить (большинству) переменных среды проходить через sudo
, или добавить в env_keep
какие конкретные переменные следует сохранить.