Ho letto qui che lo scopo di export
in 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=value
al posto diENVVAR=value cmd
, che non funzionerà nel tuo esempio se non èset -k
stato 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ì.