Ton script contient des commandes (quelle qu'elles soient).
Si tu le lances comme dans la première méthode, un nouveau shell va être créé, et ce script s'exécutera dans ce nouveau shell, qui sera détruit à la fin de la commande. Si tu le lances selon la 2e méthode (avec le . ou la commande source), il sera exécuté dans le shell courant.
Du coup maintenant on va s'intéresser au script.
Si ce sont des commandes externes, comme ls ou ps par exemple ça ne changera pas grand chose. Par contre si ce sont des commandes pour modifier le shell lui-même, évidemment que ça changera ! Là tu as des export, qui rajoutent des variables (d'ailleurs t'aurais le même phénomène sans le export, rien qu'en déclarant tes variables) dans le shell, donc en effet, selon la méthode utilisée soit tu crées un shell, tu y mets ces variables et tu détruis le shell évidemment tu as tout perdu, alors que selon la 2e méthode, ces variables seront conservées dans le shell courant.
Un autre exemple avec lequel tu peux jouer c'est cd. Selon quelle méthode d'invocation tu utilises, à la fin du script tu te seras déplacé ou pas.
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
# La différence
Posté par gUI (Mastodon) . En réponse au message Besoin d'un petit cours sur export dans un script bash. Évalué à 4. Dernière modification le 30 novembre 2024 à 08:56.
Ton script contient des commandes (quelle qu'elles soient).
Si tu le lances comme dans la première méthode, un nouveau shell va être créé, et ce script s'exécutera dans ce nouveau shell, qui sera détruit à la fin de la commande. Si tu le lances selon la 2e méthode (avec le
.ou la commandesource), il sera exécuté dans le shell courant.Du coup maintenant on va s'intéresser au script.
Si ce sont des commandes externes, comme
lsoupspar exemple ça ne changera pas grand chose. Par contre si ce sont des commandes pour modifier le shell lui-même, évidemment que ça changera ! Là tu as desexport, qui rajoutent des variables (d'ailleurs t'aurais le même phénomène sans leexport, rien qu'en déclarant tes variables) dans le shell, donc en effet, selon la méthode utilisée soit tu crées un shell, tu y mets ces variables et tu détruis le shell évidemment tu as tout perdu, alors que selon la 2e méthode, ces variables seront conservées dans le shell courant.Un autre exemple avec lequel tu peux jouer c'est
cd. Selon quelle méthode d'invocation tu utilises, à la fin du script tu te seras déplacé ou pas.En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.