Estoy tratando de ejecutar un script de instalación que requiere la instalación de Java y la JAVA_HOMEconfiguración de la variable de entorno.
Me he fijado JAVA_HOMEen /etc/profiley también en un archivo que he llamado java.shen /etc/profile.d. Puedo echo $JAVA_HOMEy obtengo la respuesta correcta y puedo igualar sudo echo $JAVA_HOMEy obtener la respuesta correcta.
En el install.shque estoy tratando de ejecutar, inserté un echo $JAVA_HOME. Cuando ejecuto este script sin sudover el directorio de Java; cuando ejecuto el script con sudoél está en blanco.
¿Alguna idea de por qué está sucediendo esto?
Estoy ejecutando CentOS.

Respuestas:
Por razones de seguridad,
sudopuede borrar las variables de entorno, por lo que probablemente no esté recogiendo $ JAVA_HOME. Busque en su/etc/sudoersarchivoenv_reset.De
man sudoers:Entonces, si desea que mantenga JAVA_HOME, agréguelo a env_keep:
Alternativamente , establecer
JAVA_HOMEen la raíz~/.bash_profile.fuente
Ejecute sudo con la opción -E (preservar entorno) (vea el archivo man), o coloque JAVA_HOME en el script install.sh.
fuente