J'ai lu ici que le but d' export
un shell est de rendre la variable disponible pour les sous-processus démarrés à partir du shell.
Cependant, j'ai également lu ici et ici que "les processus héritent de leur environnement parent (le processus qui les a démarrés)".
Si tel est le cas, pourquoi avons-nous besoin export
? Qu'est-ce que je rate?
Les variables shell ne font-elles pas partie de l'environnement par défaut? Quelle est la différence?
set -k
est tel qu'on peut utilisercmd ENVVAR=value
à la place deENVVAR=value cmd
, cela ne fonctionnera pas dans votre exemple à moins d'avoirset -k
été exécuté avant d'appelerf
. De plus, peu de shell le supporte de nos jours et uniquement pour des raisons de compatibilité avec le shell Bourne. Dans le shell Bourne (ou Korn), cela ne fonctionnerait pas pour les fonctions. Et comme cela affecte l'analyse syntaxique du shell, il doit être en vigueur au moment où le shell lit le code qui l'utilise.