Establecer variables de entorno en Linux usando Bash

En tcsh , tengo el siguiente script funcionando:

 #!/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 ubicar el ejecutable.

export VAR=value establecerá VAR en value. Adjúntelo en comillas simples si desea espacios, como export VAR='my val' . Si desea que la variable sea interpolada, use comillas dobles, como export VAR="$MY_OTHER_VAR" .

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

 VAR=value export VAR 

en lugar de la más corta

 export VAR=value 

es que la forma más larga funciona en conchas más diferentes que la forma corta. Si sabes que estás lidiando con bash , o bien funciona bien, por supuesto.

Establecer una variable local y de entorno usando Bash en Linux

Compruebe si hay variables locales o de entorno para una variable llamada LOL en Bash:

 el@server /home/el $ set | grep LOL el@server /home/el $ el@server /home/el $ env | grep LOL el@server /home/el $ 

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

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

 el@server /home/el $ LOL="so wow much code" el@server /home/el $ set | grep LOL LOL='so wow much code' el@server /home/el $ env | grep LOL el@server /home/el $ 

La variable ‘LOL’ existe en variables locales, pero no en 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

 el@server /home/el $ LOL="so wow much code" el@server /home/el $ set | grep LOL LOL='so wow much code' el@server /home/el $ exec bash el@server /home/el $ set | grep LOL el@server /home/el $ 

También podría simplemente deshacer la única variable:

 el@server /home/el $ LOL="so wow much code" el@server /home/el $ set | grep LOL LOL='so wow much code' el@server /home/el $ unset LOL el@server /home/el $ set | grep LOL el@server /home/el $ 

La variable local LOL se ha ido.

Promover una variable local a una variable de entorno:

 el@server /home/el $ DOGE="such variable" el@server /home/el $ export DOGE el@server /home/el $ set | grep DOGE DOGE='such variable' el@server /home/el $ env | grep DOGE DOGE=such variable 

Tenga en cuenta que exportar lo hace aparecer como una variable local y una variable de entorno.

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

 el@server /home/el $ exec bash el@server /home/el $ env | grep DOGE DOGE=such variable el@server /home/el $ set | grep DOGE DOGE='such variable' 

Desactivar todas las variables de entorno:

Tienes que sacar una lata de Chuck Norris para restablecer todas las variables de entorno sin un logout / login:

 el@server /home/el $ export CAN="chuck norris" el@server /home/el $ env | grep CAN CAN=chuck norris el@server /home/el $ set | grep CAN CAN='chuck norris' el@server /home/el $ env -i bash el@server /home/el $ set | grep CAN el@server /home/el $ env | grep CAN 

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

O puede establecer y desarmar una variable de entorno manualmente de esta manera:

 el@server /home/el $ export FOO="bar" el@server /home/el $ env | grep FOO FOO=bar el@server /home/el $ unset FOO el@server /home/el $ env | grep FOO el@server /home/el $ 

VAR=value establece VAR en valor.

Después de eso, export VAR a los procesos hijos.

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

Creo que estás buscando export , aunque podría estar equivocado. Nunca antes había jugado con tcsh. Use la siguiente syntax:

 export VARIABLE=value