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.
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
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
4
exportes un comando incorporado del bashshell y otras variantes del shell Bourne . Se utiliza para marcar una variable de shell para exportar a procesos secundarios.
Respuestas:
Cuando ejecuta un programa, el programa hijo hereda sus variables de entorno del padre. Por ejemplo, si
$HOME
se establece/root
en el padre, la$HOME
variable 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
Esa variable no será visible en los procesos secundarios. No, a menos que lo exporte:
Puede combinar estas dos declaraciones en una sola en bash (pero no en sh de la vieja escuela):
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 -c
crea un proceso de shell hijo que hereda el entorno del shell padre.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
.fuente
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.
Puedes echar un vistazo a esto en
fuente
VARIABLE=value; export VARIABLE
lugar de asignar y exportar a la vez. Elset
comando en C Shell es para variables de shell en lugar de variables de entorno;setenv
es la contrapartida deexport
. Elset
comando en shells derivados de Bourne imprime todas las variables, no solo las variables exportadas (de entorno). Históricamente, al menos, elenv
comando 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.export
es un comando incorporado delbash
shell y otras variantes del shell Bourne . Se utiliza para marcar una variable de shell para exportar a procesos secundarios.fuente
export
se usa para establecer variables de entorno. Por ejemplo:Establecerá su editor de texto predeterminado para que sea el
pico
comando.fuente