Estoy ejecutando Ubuntu 11.04. Yo uso la terminal para iniciar una sesión de bash, y quiero añadir una variable de entorno:
$r@hajt:~$ env THEVAR=/example
Pero no funciona. Muestra todas las variables con THEVAR siendo la última, pero otra llamada a env
ya no muestra THEVAR
- env | grep THEVAR
no devuelve nada.
Igualmente, los scripts con exportación (export THEVAR=/ejemplo
) u otras asignaciones de variables (THEVAR=/ejemplo
) no añaden la variable de entorno.
Sé que estoy haciendo algo mal, sé que debería ser algo simple, pero no puedo encontrar qué.
ACTUALIZACIÓN: El verdadero sentido de mi pregunta era este: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell
(De todos modos voy a elegir la respuesta más votada y dejar el título editado - que no era lo que estaba preguntando)
env
ejecuta un programa en un entorno modificado, y luego descarta todos los cambios.
Para establecer la variable sólo para el shell actual:
VARNAME="my value"
Para establecerla para el shell actual y todos los procesos iniciados desde el shell actual:
export VARNAME="my value" # shorter, less portable version
Para establecerlo permanentemente para todas las futuras sesiones de bash, añada esta línea a su archivo .bashrc
en su directorio $HOME
.
Para establecerlo permanentemente, y en todo el sistema (todos los usuarios, todos los procesos) añada la variable set en /etc/environment:
sudo -H gedit /etc/environment
Este archivo sólo acepta asignaciones de variables como
VARNAME="my value"
No utilice la palabra clave export
aquí.
Es necesario cerrar la sesión del usuario actual y volver a iniciar la sesión para que se produzcan los cambios en las variables de entorno.
Para establecer una variable de entorno una vez, utilice el comando export
en el prompt, no en un script del shell:
$ export THEVAR=/example
La variable quedará establecida para el resto de la sesión del shell o hasta que se desactive.
Para establecer una variable de entorno cada vez, utilice el comando export
en el archivo .bashrc
(o el archivo de inicialización apropiado para su shell).
Para establecer una variable de entorno desde un script, utilice el comando export
en el script, y luego source
el script. Si ejecutas el script no funcionará.
Para una explicación de la diferencia entre el sourcing y la ejecución vea esta respuesta: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-script/176788#176788
Para añadir permanentemente una nueva variable de entorno en Ubuntu (probado sólo en 14.04), utilice los siguientes pasos:
sudo -H gedit /etc/environment
FOO=bar
, escribe FOO=bar
en una nueva línea