我在 RHEL5 机器上安装 Tomcat,启动时遇到了一些问题,因为没有设置 JAVA_HOME。Tomcat 正在使用
sudo /sbin/service tomcat start
并在用户下运行tomcat
。当我以自己或 root 用户身份登录时,JAVA_HOME
已正确设置(使用/etc/profile.d/java.sh
)。我猜想 sudo 未正确传递此信息。
有人能指出我需要做出哪些改变才能让这个变量通过 sudo 传递或被用户获取吗tomcat
?我相信有很多方法。
提前致谢
富有的
答案1
一种方法是将 JAVA_HOME 添加到 tomcat 启动脚本中,该脚本应该位于 /etc/init.d 中
答案2
mazianni 的回答是正确的。
更多信息:
对于非交互式 shell 来说,/etc/profile
不会被读取,因此/etc/profile.d/*.sh
也不会被读取。
JAVA_HOME
在您的交互式 shell 中设置。sudo
删除大多数环境变量。您可以配置env_keep
in/etc/sudoers
以允许JAVA_HOME
通过,但如果您将 tomcat 设置为自动启动,则此方法将不再有效。(因此 mazianni 的解决方案是最好的。)
答案3
尝试sudo -E <your command>
。这可以保留(大部分)环境。man sudo
有关更多信息,请参阅。
答案4
使用visudo
(永远不要/etc/sudoers
直接编辑!),您可以选择设置!env_reset
为全局允许(大多数)环境变量通过sudo
,或者添加env_keep
应该保留的特定变量。