Ao ler sobre como configurar grub
, deparei-me com um artigo afirmando que precisava usar uma das duas sintaxes a seguir,
echo \(hd0,0\) >> /boot/grub/grub.conf
ou
echo '(hd0,0)' >> /boot/grub/grub.conf
porque, na linha de comando, os parênteses são interpretados de uma maneira especial. O que há de especial nos parênteses? Como eles são interpretados?
$()
e()
?$()
substituição é comando,()
é um subshell. Ambos executam comandos, a diferença é o que acontece com a saída. Os nomes são muito mais fáceis de pesquisar do que os símbolos. Veja também unix.stackexchange.com/q/213530/9537Uma lista de comandos incorporada entre parênteses é executada como um subshell.
Variáveis em um subshell não são visíveis fora do bloco de código no subshell. Eles não são acessíveis ao processo pai, ao shell que lançou o subshell. Essas são, de fato, variáveis locais.
Veja Linuxtopia - Capítulo 20. Subshells
fonte