En lisant comment configurer grub
, je suis tombé sur un article affirmant que je devais utiliser l'une des deux syntaxes suivantes,
echo \(hd0,0\) >> /boot/grub/grub.conf
ou
echo '(hd0,0)' >> /boot/grub/grub.conf
car, en ligne de commande, les parenthèses sont interprétées d'une manière particulière. Quelle est la particularité des parenthèses ? Comment sont-ils interprétés ?
Réponse acceptée :
Les parenthèses indiquent un sous-shell dans bash. Pour citer le man bash
page :
(list) list is executed in a subshell environment (see COMMAND
EXECUTION ENVIRONMENT below). Variable assignments and builtin
commands that affect the shell's environment do not remain in
effect after the command completes. The return status is the
exit status of list.
où une list
est juste une séquence normale de commandes.
C'est en fait assez portable et pas spécifique à bash
mais. La spécification POSIX Shell Command Language a la description suivante pour le (compound-list)
syntaxe :
Exécuter compound-list dans un environnement de sous-shell ; voir Environnement d'exécution du shell. Les affectations de variables et les commandes intégrées qui affectent l'environnement ne resteront pas en vigueur après la fin de la liste.