Aller au contenu

Sous-shell

Sous-shell (en anglais subshell) : copie du shell en cours, dans un processus enfant créé par fork() sans exécuter de nouveau programme. Bash en crée pour les parenthèses ( ... ), la substitution de commande $( ... ), chaque élément d'un tube de plusieurs commandes, les commandes lancées en arrière-plan avec &, la substitution de processus et coproc.

Le sous-shell hérite des variables (exportées ou non), des fonctions et des options du parent, mais rien de ce qu'il modifie ne remonte : une variable affectée, un cd, un exit n'agissent que sur lui. C'est la cause du compteur qui reste à zéro après commande | while read .... $$ y garde le PID du script, $BASHPID donne le sien, BASH_SUBSHELL sa profondeur. Chaque création coûte un fork, sensible dans une boucle de milliers de tours.

Dans les cours

Voir aussi