JAVA_HOME not found as Sudo

anotherdave picture anotherdave · Jul 13, 2012 · Viewed 13.7k times · Source

I have a bash script on a Linux box that runs a Jar file. When logged in as a regular user I don't have permission to run the script, but it prints the following log:

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

When I try to use the script with Sudo though, it gives:

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

I've set JAVA_HOME to the same path above — can see it with echo $JAVA_HOME & it's also set as an option within the script. I'm happy that the script isn't the issue — it's a default CQ5 control script & I'm using it on dozens of other boxes without issue. Just unsure what I'm doing wrong above & presume it's something I'm missing re Linux set-up?

When I run the sudo command, does it have access to the JAVA_HOME that I set up as myself?

Answer

fork0 picture fork0 · Jul 13, 2012

By default, sudo will cleanup the environment of the spawned commands. Pass -E to keep it:

sudo -E env

Compare to:

sudo env