Comando de exportación UNIX [cerrado]

158

Estoy tratando de entender el uso del exportcomando.

Intenté usar man export, pero no hay manual para este comando.

¿Alguien puede ayudarme a comprender el uso de exportUNIX?

Jake
fuente
Es extremadamente extraño que no haya una página de manual para ello. Yo tampoco veo uno.
Pinocho

Respuestas:

226

Cuando ejecuta un programa, el programa hijo hereda sus variables de entorno del padre. Por ejemplo, si $HOMEse establece /rooten el padre, la $HOMEvariable del niño también se establece en /root.

Esto solo se aplica a las variables de entorno marcadas para exportación. Si establece una variable en la línea de comando como

$ FOO="bar"

Esa variable no será visible en los procesos secundarios. No, a menos que lo exporte:

$ export FOO

Puede combinar estas dos declaraciones en una sola en bash (pero no en sh de la vieja escuela):

$ export FOO="bar"

Aquí hay un ejemplo rápido que muestra la diferencia entre las variables exportadas y no exportadas. Para comprender lo que sucede, sepa que sh -ccrea un proceso de shell hijo que hereda el entorno del shell padre.

$ FOO=bar
$ sh -c 'echo $FOO'

$ export FOO
$ sh -c 'echo $FOO'
bar

Nota: Para obtener ayuda sobre los comandos integrados de shell, use help export. Los elementos integrados de Shell son comandos que forman parte de su shell en lugar de ejecutables independientes como /bin/ls.

John Kugelman
fuente
16

Unix

Los comandos env, set y printenv muestran todas las variables de entorno y sus valores. env y set también se utilizan para establecer variables de entorno y, a menudo, se incorporan directamente en el shell. printenv también se puede usar para imprimir una sola variable dando ese nombre de variable como único argumento para el comando.

En Unix, los siguientes comandos también se pueden usar, pero a menudo dependen de un determinado shell.

export VARIABLE=value  # for Bourne, bash, and related shells
setenv VARIABLE value  # for csh and related shells

Puedes echar un vistazo a esto en

usuario931841
fuente
44
Bienvenido a StackOverflow. Tenga en cuenta que el clásico shell Bourne requeriría: en VARIABLE=value; export VARIABLElugar de asignar y exportar a la vez. El setcomando en C Shell es para variables de shell en lugar de variables de entorno; setenves la contrapartida de export. El setcomando en shells derivados de Bourne imprime todas las variables, no solo las variables exportadas (de entorno). Históricamente, al menos, el envcomando está separado del shell (no es un incorporado), aunque fácilmente podría convertirse en un incorporado. Establece el entorno para un comando específico, no el shell que lo ejecuta.
Jonathan Leffler
0

exportse usa para establecer variables de entorno. Por ejemplo:

export EDITOR=pico

Establecerá su editor de texto predeterminado para que sea el picocomando.

Ícaro
fuente