Li aqui que o objetivo de export
um shell é disponibilizar a variável para subprocessos iniciados no shell.
No entanto, também li aqui e aqui que "os processos herdam o ambiente do pai (o processo que os iniciou)".
Se for esse o caso, por que precisamos export
? o que estou perdendo?
As variáveis de shell não fazem parte do ambiente por padrão? Qual é a diferença?
set -k
é para que você possa usarcmd ENVVAR=value
no lugar deENVVAR=value cmd
, que não funcionará no seu exemplo, a menos que tenhaset -k
sido executado antes da chamadaf
. Além disso, poucas conchas o suportam atualmente e apenas para compatibilidade com o shell Bourne. No shell Bourne (ou Korn), isso não funcionaria para funções. E porque afeta a análise de shell, ele deve estar em vigor no momento em que o shell lê o código que o utiliza lá.