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
- Bash pour l'automatisation, leçon 5 : Boucles et lecture de données
- Bash pour l'automatisation, leçon 9 : Gérer les erreurs
- Bash pour l'automatisation, leçon 11 : Processus, parallélisme et délais