JAVA_HOME未找到 Sudo

2022-09-03 17:53:12

我在Linux盒子上有一个bash脚本,它运行一个Jar文件。以普通用户身份登录时,我没有运行脚本的权限,但它会打印以下日志:

*INFO * Using JVM found at /opt/jdk6/bin/java

当我尝试将脚本与Sudo一起使用时,它给出了:

*ERROR* Unable to locate java, please make sure java is installed and JAVA_HOME set

我已经设置了上面的相同路径 - 可以看到它,它也被设置为脚本中的一个选项。我很高兴这个脚本不是问题 - 它是一个默认的CQ5控制脚本,我正在其他几十个盒子上使用它没有问题。只是不确定我在上面做错了什么,并假设这是我在Linux设置中错过的东西?JAVA_HOMEecho $JAVA_HOME

当我运行该命令时,它是否有权访问我设置为自己的 ?sudoJAVA_HOME


答案 1

默认情况下, 将清理生成的命令的环境。通过保留它:sudo-E

sudo -E env

与以下产品相比:

sudo env

答案 2

“sudo -E”在JAVA_HOME未导出时没有解决问题。当它被导出时,没有-E的“sudo”的工作原理相同。

因此,您可以添加.bash_profile和.bashrc文件。export JAVA_HOME=.../jdk<version>

如果您想知道.bash_profile和.bashrc有什么区别,.bash_profile在登录时执行(例如,显示一些诊断/欢迎信息)。.bash_rc在打开新终端时执行(例如,shift-ctrl-T)。

为了在这两种情况下运行一些命令,你可以把它放在.bashrc文件中,并让.bash_profile源.bashrc:

if [ -f ~/.bashrc ]; then
   source ~/.bashrc
fi

推荐