2011-09-14 10 views

Respuesta

101

Las variables exportadas (como $HOME y $PATH) están disponibles para otros programas. Las variables regulares (no exportadas) no están disponibles para otros programas.

$ env | grep '^variable=' 
$         # No environment variable called variable 
$ variable=Hello     # Create local (non-exported) variable with value 
$ env | grep '^variable=' 
$         # Still no environment variable called variable 
$ export variable     # Mark variable for export to child processes 
$ env | grep '^variable=' 
variable=Hello 
$ 
$ export other_variable=Goodbye # create and initialize exported variable 
$ env | grep '^other_variable=' 
other_variable=Goodbye 
$ 

Para obtener más información, consulte la entrada de la export builtin en el manual de GNU Bash.

Tenga en cuenta que las variables no exportados estarán disponibles a través de subniveles ejecutar (...) y similares anotaciones:

$ othervar=present 
$ (echo $othervar; echo $variable; variable=elephant; echo $variable) 
present 
Hello 
elephant 
$ echo $variable 
Hello 
$ 

El subnivel no puede afectar a la variable en la cáscara de los padres, por supuesto.

Puede encontrar algo de información sobre subcapas en command grouping y command execution environment en el manual de Bash.

+0

Agregué algunas líneas nuevas y también líneas que muestran '$' para mostrar más claramente que no hay salida del comando 'grep'. Por supuesto, puede revertir si cree que esto pierde legibilidad – fedorqui

12

Bueno, generalmente depende de la carcasa. Para bash, marca la variable como "exportable", lo que significa que se mostrará en el entorno de cualquier proceso secundario que ejecute.

Las variables no exportadas solo son visibles desde el proceso actual (el shell).

Desde la página bash hombre:

export [-fn] [name[=word]] ...
export -p

Los nombres suministrados están marcados para la exportación automática al entorno de los comandos ejecutados posteriormente.

Si se proporciona la opción -f, los nombres se refieren a las funciones. Si no se proporcionan nombres, o si se proporciona la opción -p, se imprime una lista de todos los nombres que se exportan en este shell.

La opción -n hace que la propiedad de exportación se elimine de cada nombre.

Si el nombre de una variable va seguido de =word, el valor de la variable se establece en word.

export devuelve un estado de salida de 0 a menos que se encuentre una opción no válida, uno de los nombres no es un nombre válido de variable de shell, o -f se proporciona con un nombre que no es una función.

También puede establecer variables como exportables con el comando typeset y marcar automáticamente todas las variables futuras creaciones o modificaciones como tal, con set -a.

-2

La variable exportada está disponible para todos los procesos dentro de la jerarquía de procesos. Por ejemplo, los datos exportados por proceso hijo están disponibles para el proceso principal y viceversa.

El principal caso de uso de la exportación es compartir datos entre 2 procesos.

+1

El proceso hijo no puede cambiar el valor de su elemento principal. –