1 votos

Cómo cambiar de entorno JAVA_HOME con un script de Bash

He creado un script en Bash con la siguiente línea:

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home" 2> bash_errors.txt

También he hecho el archivo ejecutable

chmod 777 bash_test

Cuando ejecuto el script y verificación

java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)

Sin embargo si ejecuto directamente en Bash

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home"

Y, a continuación, compruebe

java -version
java version "1.7.0_75"
Java(TM) SE Runtime Environment (build 1.7.0_75-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.75-b04, mixed mode)

Los cambios de ruta de acceso. Además, si puedo cambiar la secuencia de comandos de la línea a

sudo export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home" 2> bash_errors.txt

Me sale el siguiente en la bash_errors.txt archivo

sudo: export: command not found

Así que yo sé que el script se está ejecutando, pero JAVA_HOME no cambia cuando se ejecuta desde el script.

Lo que no estoy entendiendo? ¿Cómo puedo cambiar la variable de entorno JAVA_HOME a partir de un guión?

Mi objetivo es permanentemente cambiar de entorno JAVA_HOME de 8 a 7 - estoy al final va a agregar .bash_profile para mi directorio predeterminado.

Editar

Tratando de cambiar los archivos mencionados en los vínculos de referencia que son de sólo lectura, incluso mediante el uso de sudo vim:

enter image description here

2voto

Andrey Losev Puntos 197

Cuando se ejecuta un script, se crea un nuevo proceso fuera de la shell interactivo que vive por la longitud de la secuencia de comandos.

Por defecto, este proceso hijo hereda su shell interactivo de medio ambiente, y puede alterar/modificar. Por lo que el contenido de la de entorno JAVA_HOME se altera en el proceso hijo, pero el proceso hijo no puede afectar el medio ambiente de los padres en el proceso de su shell interactivo.

Puede configurar el entorno de la shell interactivo en diferentes lugares dependiendo del shell (~/.bash_profile es uno de bash como usted menciona en su pregunta). Consulte los enlaces de respuesta en el comentario a tu pregunta de la mejor manera de 'permanentemente' los valores del entorno.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X