Si corro
export TEST=foo
echo $TEST
Emite foo.
Si corro
TEST=foo echo $TEST
No es asi. ¿Cómo puedo obtener esta funcionalidad sin utilizar la exportación o un script?
Respuesta aceptada:
Esto se debe a que el shell expande la variable en la línea de comando antes en realidad ejecuta el comando y en ese momento la variable no existe. Si usas
TEST=foo; echo $TEST
funcionará.
export
hará que la variable aparezca en el entorno de los comandos ejecutados posteriormente (para saber cómo funciona esto en bash, consulte help export
). Si solo necesita que la variable aparezca en el entorno de un comando, use lo que ha probado, es decir:
TEST=foo your-application
La sintaxis de shell describe esto como funcionalmente equivalente a:
export TEST=foo
your-application
unset TEST
Consulte las especificaciones para obtener más detalles.
La parte interesante es que export
El comando cambia el indicador de exportación para la variable nombre . Por lo tanto, si lo hace:
unset TEST
export TEST
TEST="foo"
TEST
se exportará aunque no se definió en el momento en que se exportó. Sin embargo, más unset
debería quitarle el atributo de exportación.