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.
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