2010-04-16 35 views
134

En Ubuntu, me gustaría cambiar mi variable de entorno JAVA_HOME de ida y vuelta entre Java 5 y 6.

abro un terminal y escriba el siguiente para establecer el entorno JAVA_HOME variables:

export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun 

Y en la misma ventana de terminal, que escriba lo siguiente para comprobar que la variable de entorno se ha actualizado:

echo $JAVA_HOME 

Y veo /usr/lib/jvm/java-1.5.0-sun que es lo que espero ver. Además, modifico ~/.profile y establezco la variable de entorno JAVA_HOME en /usr/lib/jvm/java-1.5.0-sun.

Y ahora para el problema - al abrir una nueva ventana de terminal y verifico mi variable de entorno JAVA_HOME escribiendo en echo $ JAVA_HOME veo que mi variable de entorno JAVA_HOME se ha vuelto de nuevo a Java 6. Cuando reiniciar mi máquina (o cerrar sesión y volver a entrar, supongo) la variable de entorno JAVA_HOME está configurada en Java 5 (presumiblemente debido a la modificación que hice en mi ~/.profile).

¿Hay una forma de evitar esto para que pueda cambiar mi entorno JAVA_HOME sin tener que salir y volver en (y hacer que el entorno de cambio de variable palo en todas las nuevas ventanas de terminal)?

+28

¿Cuál es el sitio correcto y la respuesta duplicada? –

+2

Gran pregunta. No hay buenas respuestas. – mlissner

+0

El archivo '~/.profile' solo se lee cuando inicia sesión en Ubuntu, por lo que si cierra la sesión/inicia sesión, JAVA_HOME se configura para todos los terminales y cualquier otra aplicación que ejecute. Si configura JAVA_HOME en '~/.bashrc', solo lo verán las aplicaciones que se ejecuten desde el terminal. – jr0cket

Respuesta

189

Ponga las variables de entorno en el /etc/environment de archivos global:

... 
export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun 
... 

Ejecutar "source/etc/environment" en todos los depósitos donde se desea que las variables que se actualizan:

$ source /etc/environment 

Verifique que funcione:

$ echo $JAVA_HOME 
$ /usr/lib/jvm/java-1.5.0-sun 

Genial, no es necesario desconectarse.

Si desea establecer la variable de entorno JAVA_HOME solo en el terminal, configúrelo en el archivo ~/.bashrc.

+9

Aún se necesita reiniciar para que estos cambios afecten a las aplicaciones iniciadas a través de la UI de Ubuntu (es decir, hacer doble clic en una aplicación) –

+7

¿Cómo es esto diferente a solo establecer la variable en cada caparazón? – mlissner

+0

@mlissner Sí, necesita ejecutar un comando en cada shell, pero el valor también permanece en el archivo '/ etc/environment' de forma permanente. Cuando acaba de establecer la variable en cada shell, se perderá nuevamente después de reiniciar. –

1

Tome un vistazo a bash(1), necesita una cáscara entrada a la recogida ~/.profile, es decir, la opción -l.

30

Esto probablemente va a resolver su problema: https://help.ubuntu.com/community/EnvironmentVariables

variables de entorno de toda la sesión

Con el fin de establecer las variables de entorno de una manera que afecta el entorno de un usuario en particular, no se debe colocar comandos para establecer sus valores en archivos de script de shell particulares en el directorio de inicio del usuario, pero use:

~/.pam_environment - Este archivo es específicamente destinado a configurar el entorno de un usuario. No es un archivo de script, sino que consiste en expresiones de asignación, una por línea.

No se recomienda:

~/.profile - Este es probablemente el mejor archivo para la colocación de las asignaciones de variables de entorno en, ya que es ejecutado automáticamente por el DisplayManager durante la sesión de escritorio proceso de inicio, así como por la iniciar sesión shell cuando uno inicia sesión desde la consola de texto.

+0

Desde el enlace que proporcionó : "No se recomienda lo siguiente, pero la solución anterior (?) Proporcionada en esta página no funcionaba con la versión de escritorio 10.04. .pam_environment no se procesa de forma natural con la distribución." – Calmarius

+12

~/.pam_environment es una manera increíble de ingrese su nombre de usuario si considera que procesa variables. Intenté configurar PATH en $ {PATH}: $ {HOME}/bin y no pude evaluar las variables. Resultado neto: no se puede iniciar sesión :(Solucionado visitando Ctrl-Alt-1 y ejecutando "/ bin/rm ~/.pam_environment". Sea excepcionalmente cuidadoso o use una cuenta secundaria para probar la configuración aquí. –

+6

Personalmente no sé por qué se molestaron en crear el archivo de entorno y luego lo hicieron funcionar de una manera completamente diferente a cualquier otro mecanismo para establecer las variables de entorno antes trabajadas. Los pares de valores de clave simples como el archivo de entorno utiliza son BS simples. Hay una razón por la que utilizamos variables y enlaces en el medio ambiente y todavía tiene mérito hoy. Simplifica la administración. Quienquiera que sean los bozos que decidieron que la manera de hacer las cosas en este archivo era lo mejor son imbéciles en el mejor de los casos. Las variables NECESITAN ser interpretadas. – BillR

13

Pruebe estos pasos.

- Vamos a editar "etc \ profile". Las variables de entorno se deben ingresar en la parte inferior del archivo. Dado que Ubuntu no da acceso a la carpeta raíz, tendremos que usar algunos comandos en el terminal

Paso 1: Iniciar la Terminal.Escriba en comando: gksudo gedit /etc/profile

Paso 2: se abrirá el archivo de texto de perfil. Introduzca las variables de entorno en la parte inferior de la página ........... Ej:export JAVA_HOME=/home/alex/jdk1.6.0_22/bin/java

export PATH=/home/alex/jdk1.6.0_22/bin:$PATH 

Paso 3: guardar y cerrar el archivo. Comprobar si las variables de entorno se establecen mediante comando echo ........ Ejecho $PATH

9

que necesita para poner definición de variable en el archivo ~/.bashrc.

Desde la página de manual de bash:

Cuando un shell interactivo que es no se ha iniciado un shell de entrada, golpe del lee y ejecuta órdenes desde /etc/bash.bashrc y ~/.bashrc, si existen estos archivos.

5

Tradicionalmente, si sólo desea cambiar la variable en sus ventanas de terminal, la pusieron en .bashrc archivo, los cuales se obtienen cada vez que un nuevo terminal es abrió. El archivo .profile no se obtiene cada vez que abre una nueva terminal.

ver la diferencia entre .profile y .bashrc en cuestión: What's the difference between .bashrc, .bash_profile, and .environment?

.bashrc debería resolver su problema. Sin embargo, no es la solución adecuada ya que estás usando Ubuntu. Consulte la página de ayuda de Ubuntu correspondiente "Session-wide environment variables". Por lo tanto, no es de extrañar que .profile no funcione para usted. Yo uso Ubuntu 12.04 y xfce. Configuré mi .profile y simplemente no entra en vigencia incluso si cierro la sesión y entro. Experiencia similar here. Por lo tanto, puede que tenga que usar el archivo .pam_environment y olvidarse por completo de .profile y .bashrc. Y NOTE que .pam_environment no es un archivo de script.

1

Después de realizar cambios en.perfil, debe ejecutar el archivo para que los cambios surtan efecto.

[email protected]# . ~/.profile 

Una vez hecho esto, el comando echo funcionará.

+0

Debe usar '~/.profile' en lugar de' ./. Profile'. –

Cuestiones relacionadas