Respuestas:
Creo que la página wiki de la comunidad sobre variables de entorno te ayudará a resolver
Para agregar a la respuesta de sagarchalise, puedo resumir lo que sugiere el enlace como lugares apropiados para la configuración.
/etc/environment
/etc/profile
o/etc/bash.bashrc
De la página:
/etc/environment
[...] está específicamente diseñado para configuraciones variables de entorno de todo el sistema. No es un archivo de script, sino que consiste en expresiones de asignación, una por línea. Específicamente, este archivo almacena la configuración regional y la configuración de ruta de todo el sistema.
Usar /etc/profile
es un camino muy Unix-y, pero su funcionalidad se reduce en Ubuntu. Solo existe para apuntar /etc/bash.bashrc
y recopilar entradas de /etc/profile.d
.
En mi sistema, la única entrada de entrada interesante en profile.d es /etc/profile.d/bash_completion.sh
.
Se recomienda una versión anterior de la página de Ubuntu ~/.pam_environment
, pero la página actualmente sugiere que si eso no funciona, debe usar
~/.profile
- Este es probablemente el mejor archivo para colocar asignaciones de variables de entorno, ya que el DisplayManager lo ejecuta automáticamente durante la sesión de escritorio del proceso de inicio, así como el shell de inicio de sesión cuando se inicia sesión desde la consola de texto.
~/.bash_profile
o ~./bash_login
- Si existe uno de estos, bash lo ejecuta en lugar de ~/.profile
cuando bash se inicia como un shell de inicio de sesión. Bash preferirá ~/.bash_profile
a ~/.bash_login
. [...] Estos archivos no influirán en una sesión gráfica de forma predeterminada ".
~/.bashrc
- "... puede ser el lugar más fácil para establecer variables". /etc/environment
y cuándo? Parece que no funciona con cron, incluso cuando se usaSHELL=/bin/bash
/etc/environment
gusten JAVA_HOME="/opt/java"
y ANT_HOME="/opt/ant"
cómo hacerlo
Tienes:
/ etc / profile: archivo de perfil de todo el sistema para el shell Bourne (sh (1)) y shells compatibles con Bourne (bash (1), ksh (1), ash (1), ...).
que en Lucid y Maverick corren
/etc/profile.d/*.sh
si está presente, y si el shell del usuario es bash:
/etc/bash.bashrc
Para el entorno del usuario, existe una matriz confusa específica para el shell y si se considera un "shell de inicio de sesión". Si el shell es bash:
~/.bash_profile
The personal initialization file, executed for login shells
~/.bashrc
The individual per-interactive-shell startup file
para sh / dash:
$HOME/.profile
para zsh, ni siquiera voy a tratar de darle sentido a esto .
Como se recomienda en https://help.ubuntu.com/community/EnvironmentVariables :
Las variables de entorno global destinadas a afectar a todos los usuarios deben entrar /etc/environment
.
Se deben establecer variables de entorno específicas del usuario ~/.pam_environment
.
Evite el perfil y los archivos rc para configurar variables de entorno en Ubuntu. Me han causado más dolores de cabeza de lo que valen.
Sin embargo, esto es más fácil decirlo que hacerlo;)
Es posible que se encuentre con la misma brecha de configuración que existía para mí. Vea la solución alternativa para el hogar encriptado a continuación.
~/.pam_environment
:PATH DEFAULT=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:${HOME}/bin
IDEA_JDK DEFAULT=${HOME}/Applications/jdk
¿Por qué el feo camino estático? ${PATH}
No funcionaría para mí Bloqueé mi inicio de sesión varias veces tratando de solucionarlo, así que me quedo con la fea copia estática de los valores predeterminados :)
En las versiones de Ubuntu hasta Precise 12.04 Beta 2, si está utilizando un directorio de inicio cifrado, deberá modificarlo /etc/pam.d/common-session
para que se cargue ~/.pam_environment
. Aparentemente, esta solución funciona para versiones anteriores, pero no la he probado.
Esto parece ser un problema con los directorios principales cifrados. yo añadí
se requiere sesión pam_env.so
al final de /etc/pam.d/common-session y ahora se lee ~ / .pam_environment. En otro sistema sin directorios de inicio encriptados (también 10.04) no es necesario solucionar el problema. Quizás en mi caso el sistema intente leer ~ / .pam_environment antes de descifrarlo.
Adaptado de mi respuesta en Super Usuario: https://superuser.com/a/408373/66856
${HOME}
tampoco funcionará. No hay expansión en .pam_environment
.
.pam_environment
, pero HOME
generalmente no se establece tan temprano. Si esa línea hubiera leído DEFAULT=${PATH}/Applications/jdk
, habría visto el valor de PATH
insertado en ella.