Quelle est l’utilité de placer plusieurs commandes entre parenthèses dans un script shell Unix?

Il y a plusieurs façons d’exécuter plusieurs commandes en même temps. Une manière consiste à séparer chaque commande par un point-virgule:

ls;who;banner Hi 

Une autre façon consiste à inclure plusieurs commandes entre parenthèses.

 (cd mydir;pwd) 

Que se passera-t-il en les mettant entre parenthèses?

Les parenthèses créent un sous-shell. Un sous-shell est une copie de leur shell actuel, ce qui signifie que les modifications d’état telles que la modification du répertoire de travail avec cd ou la définition de variables shell ou l’exportation de variables d’environnement n’affectent pas le shell d’origine.

Dans le cas présent, la commande cd change le répertoire de travail et pwd montre. Lorsque l’invite retourne, vous serez toujours dans le même répertoire que précédemment, car cd n’a modifié le répertoire que dans le sous-shell.