Leí aquí que el propósito de exportun 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 -kes para que se pueda usarcmd ENVVAR=valueen lugar deENVVAR=value cmd, eso no funcionará en su ejemplo a menos queset -kse 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í.