Ho letto qui che lo scopo di exportin una shell è rendere la variabile disponibile per i sottoprocessi avviati dalla shell.
Tuttavia, ho anche letto qui e qui che "I processi ereditano il loro ambiente dai loro genitori (il processo che li ha avviati)".
In questo caso, perché ne abbiamo bisogno export? Cosa mi sto perdendo?
Le variabili shell non fanno parte dell'ambiente per impostazione predefinita? Qual è la differenza?
set -kè così che si può usarecmd ENVVAR=valueal posto diENVVAR=value cmd, che non funzionerà nel tuo esempio se non èset -kstato eseguito prima di invocaref. Inoltre, non molte shell lo supportano al giorno d'oggi e solo per compatibilità con la shell Bourne. Nella shell Bourne (o Korn), non funzionerebbe per le funzioni. E poiché influisce sull'analisi della shell, deve essere in vigore nel momento in cui la shell legge il codice che la utilizza lì.