it-swarm.dev

Configurando variables de entorno en Linux usando Bash

En tcsh, tengo el siguiente script trabajando:

#!/bin/tcsh
setenv X_ROOT /some/specified/path

setenv XDB    ${X_ROOT}/db
setenv PATH   ${X_ROOT}/bin:${PATH}

xrun -d xdb1 -i $1 > $2

¿Cuál es el equivalente a la función tcsh setenv en Bash?

¿Hay un análogo directo? Las variables de entorno son para localizar el ejecutable.

65
pbh101

export VAR=value establecerá VAR en valor. Inclúyalo entre comillas simples si desea espacios, como export VAR='my val'. Si quiere interpolar la variable, use comillas dobles, como export VAR="$MY_OTHER_VAR".

100
mipadi

La razón por la que la gente a menudo sugiere escribir

VAR=value
export VAR

en lugar de los más cortos

export VAR=value

es que la forma más larga funciona en más capas diferentes que la forma corta. Si sabes que estás tratando con bash, cualquiera de los dos funciona bien, por supuesto.

33
zaphod

Establecer una variable local y de entorno usando Bash en Linux

Verifique las variables locales o de entorno para una variable llamada LOL en Bash:

[email protected] /home/el $ set | grep LOL
[email protected] /home/el $
[email protected] /home/el $ env | grep LOL
[email protected] /home/el $

Verificación de la cordura, ninguna variable local o de entorno llamada LOL.

Establece una variable local llamada LOL en local, pero no en el entorno. Así que configúralo:

[email protected] /home/el $ LOL="so wow much code"
[email protected] /home/el $ set | grep LOL
LOL='so wow much code'
[email protected] /home/el $ env | grep LOL
[email protected] /home/el $

La variable 'LOL' existe en las variables locales, pero no en las variables de entorno. LOL desaparecerá si reinicia el terminal, cierra sesión/inicia sesión o ejecuta exec bash.

Establezca una variable local y luego borre todas las variables locales en Bash

[email protected] /home/el $ LOL="so wow much code"
[email protected] /home/el $ set | grep LOL
LOL='so wow much code'
[email protected] /home/el $ exec bash
[email protected] /home/el $ set | grep LOL
[email protected] /home/el $

También puedes simplemente desarmar la única variable:

[email protected] /home/el $ LOL="so wow much code"
[email protected] /home/el $ set | grep LOL
LOL='so wow much code'
[email protected] /home/el $ unset LOL
[email protected] /home/el $ set | grep LOL
[email protected] /home/el $

La variable local LOL se ha ido.

Promover una variable local a una variable de entorno:

[email protected] /home/el $ DOGE="such variable"
[email protected] /home/el $ export DOGE
[email protected] /home/el $ set | grep DOGE
DOGE='such variable'
[email protected] /home/el $ env | grep DOGE
DOGE=such variable

Tenga en cuenta que la exportación hace que se muestre como una variable local y una variable de entorno.

La variable exportada DOGE anterior sobrevive a un reinicio de Bash:

[email protected] /home/el $ exec bash
[email protected] /home/el $ env | grep DOGE
DOGE=such variable
[email protected] /home/el $ set | grep DOGE
DOGE='such variable'

Eliminar todas las variables de entorno:

Tienes que sacar una lata de Chuck Norris para restablecer todas las variables de entorno sin cerrar sesión/iniciar sesión:

[email protected] /home/el $ export CAN="chuck norris"
[email protected] /home/el $ env | grep CAN
CAN=chuck norris
[email protected] /home/el $ set | grep CAN
CAN='chuck norris'
[email protected] /home/el $ env -i bash
[email protected] /home/el $ set | grep CAN
[email protected] /home/el $ env | grep CAN

Creó una variable de entorno y luego restableció el terminal para deshacerse de ellos.

O puede configurar y desactivar una variable de entorno de forma manual como esta:

[email protected] /home/el $ export FOO="bar"
[email protected] /home/el $ env | grep FOO
FOO=bar
[email protected] /home/el $ unset FOO
[email protected] /home/el $ env | grep FOO
[email protected] /home/el $
26
Eric Leschinski

VAR=value establece VAR en valor.

Después de eso, export VAR lo dará a los procesos secundarios también.

export VAR=value es una taquigrafía que hace ambas cosas.

11
iny

Creo que estás buscando export - aunque podría estar equivocado ... nunca he jugado con tcsh antes. Usa la siguiente sintaxis:

export VARIABLE=value
7
Oli