Por lo que puedo decir, la asignación de variables es la misma ya sea que esté o no precedida por "exportar". ¿Para qué es esto?¿Qué hace "exportar" en la programación de shell?
Respuesta
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.
hace que la asignación sea visible para los subprocesos.
[email protected]:~/rentacoder/bin2txt$ foo=bar
[email protected]:~/rentacoder/bin2txt$ bash -c 'echo $foo'
[email protected]:~/rentacoder/bin2txt$ export foo
[email protected]:~/rentacoder/bin2txt$ bash -c 'echo $foo'
bar
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 enword
.
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
.
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.
El proceso hijo no puede cambiar el valor de su elemento principal. –
- 1. programación básica de shell
- 2. ¿Qué hace el operador "= ~" en scripts de shell?
- 3. [: operador inesperado en la programación del shell
- 4. ¿Qué hace "2 <& 1" redirigir en Bourne shell?
- 5. Linux Shell: programación VLC
- 6. Libro sobre la programación del shell Linux
- 7. cadena de programación del shell de Linux compare la sintaxis
- 8. shell unix variables especiales de programación
- 9. ¿Cómo se hace programación genérica en Haskell?
- 10. ¿Cómo exportar una variable de shell dentro de un script de Perl?
- 11. ¿Qué es '$$' en el shell bash?
- 12. ¿Qué hace -n en si [-n "$ {TEMP_FILE_LIST}"]?
- 13. ¿Qué hace <() en Bash?
- 14. ¿Qué hace '@_' en Perl?
- 15. ¿Qué hace% {} en Ruby?
- 16. ¿Qué significa exportar un símbolo?
- 17. ¿Qué hace HTML Purifier que la programación segura de PHP no puede?
- 18. Eclipse: exportar la configuración en ejecución
- 19. ¿Qué significa $$ en el shell?
- 20. ¿Qué implica la programación de comercio electrónico?
- 21. ¿Qué hace la copia hg?
- 22. ¿Qué hace la función invisible()?
- 23. ¿Qué hace == en Ruby?
- 24. ¿Qué hace la bandera permisiva?
- 25. ¿Qué hace% en JavaScript?
- 26. ¿Qué hace la instrucción movsbl?
- 27. ¿Qué hace la propiedad ShadowCopyFiles en appdomain?
- 28. Establecer la variable de entorno en el script de shell no lo hace visible para el shell
- 29. ¿Qué hace la opción -lm en g ++?
- 30. ¿Qué hace la función j en Rails?
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