Estoy en un poco de una pérdida en cuanto a la finalidad de set
y export
en Bash (y supongo que probablemente otros proyectiles también).
Creo que es para establecer variables de entorno, pero eso se puede hacer solo con VARIABLE=VALUE
, ¿verdad?
También escribiendo set
y export
por sí mismos muestran diferentes valores.
Entonces, ¿cuál es su propósito?
Respuestas:
export
exporta a los hijos del proceso actual, por defecto no se exportan. Por ejemplo:set
, por otro lado, establece atributos de shell, por ejemplo, los parámetros posicionales.Tenga en cuenta que
baz
no está asignado afoo
, simplemente se convierte en un parámetro posicional literal. Hay muchas otras cosas queset
puede hacer (principalmente opciones de shell), veahelp set
.En cuanto a la impresión, la
export
llamada sin argumentos imprime todas las variables en el entorno del shell.set
también imprime variables que no se exportan. También puede exportar algunos otros objetos (aunque debe tener en cuenta que esto no es portátil), veahelp export
.fuente
foo=bar command
. Esta es una exportación implícita para un solo comando. La segunda posibilidad es quehttp_proxy
ya se haya exportado a su entorno antes de modificarlo.Ver
help set
: set se usa para establecer atributos de shell y atributos posicionales.Las variables que no se exportan no son heredadas por los procesos secundarios.
export
se utiliza para marcar una variable para exportar.fuente