Durante la lettura di come configurare grub
, mi sono imbattuto in un articolo in cui si afferma che è necessario utilizzare una delle due sintassi seguenti
echo \(hd0,0\) >> /boot/grub/grub.conf
o
echo '(hd0,0)' >> /boot/grub/grub.conf
perché, a riga di comando, le parentesi vengono interpretate in modo speciale. Cosa hanno di speciale le parentesi? Come vengono interpretati?
Risposta accettata:
Le parentesi denotano una subshell in bash. Per citare il man bash
pagina:
(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.
dove un list
è solo una normale sequenza di comandi.
Questo è in realtà abbastanza portatile e non specifico solo per bash
anche se. La specifica POSIX Shell Command Language ha la seguente descrizione per (compound-list)
sintassi:
Esegui elenco composto in un ambiente subshell; vedere Ambiente di esecuzione della shell. Le assegnazioni di variabili e i comandi integrati che influiscono sull'ambiente non rimarranno attivi al termine dell'elenco.