我正在RHEL5机器上安装Tomcat,并且在启动时遇到了一些麻烦,因为JAVA_HOME没有设置。 Tomcat正在开始使用
sudo /sbin/service tomcat start
并在用户tomcat
下运行。 当我以自己的身份或以root用户身份login时,正确设置JAVA_HOME
(使用/etc/profile.d/java.sh
)。 我猜这是由sudo没有正确传递。
有人能指出我需要做的变化的方向,以获得这个variables通过sudo通过或由tomcat
用户拿起? 我相信有很多方法。
提前致谢
丰富
一种方法是将JAVA_HOME添加到tomcat启动脚本中,该脚本应位于/etc/init.d
马齐亚尼的回答是正确的。
更多信息:
对于非交互式shell而言,不会读取/etc/profile
,因此/etc/profile.d/*.sh
也不会被读取。
JAVA_HOME
在交互式shell中设置。 sudo
去掉大部分的环境variables。 你可以在/etc/sudoers
configurationenv_keep
来允许JAVA_HOME
通过,但是如果你设置了tomcat来自动启动这个方法将不再起作用。 (因此马齐亚尼的解决scheme是最好的。)
试试sudo -E <your command>
。 这保留了(大部分)环境。 请参阅man sudo
以获取更多信息。
您可以在执行BASH之前临时设置一个variables。 这将立即可用于命令。
JAVA_HOME=/path/to/java sudo /sbin/service tomcat start
读man sudoers
。
使用visudo
(绝对不要直接编辑/etc/sudoers
!),你可以select设置!env_reset
来全局允许(大多数)环境variables通过sudo
,或者增加env_keep
来保存哪些特定的variables。