¿Cómo agrego variables de entorno?

221

Estoy ejecutando Ubuntu 11.04. Utilizo el terminal para iniciar una sesión de bash, y quiero agregar una variable de entorno:

$r@hajt:~$ env THEVAR=/example

Pero no está funcionando. Muestra todas las variables con THEVAR siendo la última, pero otra llamada a env no muestra THEVAR anymore- env | grep THEVAR no devuelve nada.

De manera similar, las secuencias de comandos con exportación ( export THEVAR=/example ) u otras asignaciones de variables ( THEVAR=/example ) no agregan 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 significado de mi pregunta era este: enlace

(De todos modos, 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, luego descarta todos los cambios.

    
pregunta huff 27.08.2011 - 02:22

5 respuestas

357

Para establecer la variable solamente para el shell actual:

VARNAME="my value"

Para configurarlo para el shell actual y todos los procesos iniciados desde el shell actual:

export VARNAME="my value"      # shorter, less portable version

Para configurar permanentemente para todas las futuras sesiones de bash, agregue dicha línea a su archivo .bashrc en su directorio $HOME .

Para establecerlo permanentemente, y todo el sistema (todos los usuarios, todos los procesos) agregue la variable establecida en / etc / environment:

sudo -H gedit /etc/environment

Este archivo solo acepta asignaciones de variables como:

VARNAME="my value"

No use la palabra clave export aquí.

Debe cerrar la sesión del usuario actual e iniciar sesión de nuevo para que se produzcan cambios en las variables de entorno.

    
respondido por el Michał Šrajer 27.08.2011 - 09:50
21

Para establecer una variable de entorno una vez, use el comando export en el indicador, no en un script de shell:

$ export THEVAR=/example

La variable se establecerá para el resto de la sesión del shell o hasta que se desactive.

Para establecer una variable de entorno cada vez, use el comando export en el archivo .bashrc (o el archivo de inicialización apropiado para su shell).

Para establecer una variable de entorno a partir de un script, use el comando export en el script, y luego source el script. Si ejecuta el script, no funcionará.

Para obtener una explicación de la diferencia entre el origen y la ejecución, vea esta respuesta: enlace

    
respondido por el lesmana 27.08.2011 - 09:20
15

Para agregar permanentemente una nueva variable de entorno en Ubuntu (probado solo en 14.04), use los siguientes pasos:

  1. Abra una terminal (presionando Ctrl Alt T )
  2. sudo -H gedit /etc/environment
  3. Escriba su contraseña
  4. Edite el archivo de texto que acaba de abrir:
    p.ej. si desea agregar FOO=bar , simplemente escriba FOO=bar en una nueva línea
  5. Guárdalo
  6. Una vez guardado, cierre la sesión e inicie sesión de nuevo.
  7. Se realizan los cambios necesarios.
respondido por el user355501 07.12.2014 - 09:45
3

Para que los cambios de entorno / var persistan una vez que se ha completado la secuencia de comandos, debe usar source ./script.sh o la notación abreviada de fuente, ".", como . ./script.sh

Source ejecutará los comandos en el script como si los hubiera escrito ... así que cambia algunos aspectos del script, como salir ... por lo que si el script verifica algo y decide salir si es falso, por ejemplo, al llamar a exit 0 , terminará su sesión actual de terminal / shell.

    
respondido por el m0bl 16.03.2018 - 16:09
1

Si está haciendo cosas a través del script, una forma fácil de establecer la variable de entorno permanentemente es poner debajo de la declaración en su script,

if [[ ! -d "$MyVar" ]]; then 
    export MyVar="abc"
    echo 'export MyVar="abc"' >> ~/.bashrc
fi

Si necesita evaluar expresiones como pwd, puede usar esto, por ejemplo,

echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc
    
respondido por el ShitalShah 12.07.2017 - 04:06

Lea otras preguntas en las etiquetas