Leí aquí que el propósito de export
un shell es hacer que la variable esté disponible para los subprocesos iniciados desde el shell.
Sin embargo, también he leído aquí y aquí que "los procesos heredan su entorno de sus padres (el proceso que los inició)".
Si este es el caso, ¿por qué necesitamos export
? ¿Qué me estoy perdiendo?
¿Las variables de shell no son parte del entorno por defecto? ¿Cuál es la diferencia?
set -k
es para que se pueda usarcmd ENVVAR=value
en lugar deENVVAR=value cmd
, eso no funcionará en su ejemplo a menos queset -k
se haya ejecutado antes de invocarf
. Además, no hay muchos shells que lo admitan hoy en día y solo por compatibilidad con el shell Bourne. En el shell Bourne (o Korn), eso no funcionaría para las funciones. Y debido a que afecta el análisis del shell, tiene que estar vigente en el momento en que el shell lee el código que lo utiliza allí.