Estoy tratando de ejecutar un script de instalación que requiere la instalación de Java y la JAVA_HOME
configuración de la variable de entorno.
Me he fijado JAVA_HOME
en /etc/profile
y también en un archivo que he llamado java.sh
en /etc/profile.d
. Puedo echo $JAVA_HOME
y obtengo la respuesta correcta y puedo igualar sudo echo $JAVA_HOME
y obtener la respuesta correcta.
En el install.sh
que estoy tratando de ejecutar, inserté un echo $JAVA_HOME
. Cuando ejecuto este script sin sudo
ver 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,
sudo
puede borrar las variables de entorno, por lo que probablemente no esté recogiendo $ JAVA_HOME. Busque en su/etc/sudoers
archivoenv_reset
.De
man sudoers
:Entonces, si desea que mantenga JAVA_HOME, agréguelo a env_keep:
Alternativamente , establecer
JAVA_HOME
en 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