Как скобки интерпретируются в командной строке?

Во время чтения о том, как настроить grub , я наткнулся на статью, утверждающую, что мне нужно использовать один из двух следующих синтаксисов:

 echo \(hd0,0\) >> /boot/grub/grub.conf 

или

 echo '(hd0,0)' >> /boot/grub/grub.conf 

потому что в командной строке скобки интерпретируются особым образом. Что особенного в круглых скобках? Как они интерпретируются?

  • Почему \ n расширяется до n в bash?
  • sed - не добавляет новую строку EOF и заменяет букву не определенной
  • bash выполнить команду чтения из файла
  • Почему обратная косая черта преобразуется в пространство в выражении эха, если IFS = '\'?
  • Параметр игнорируется при цитировании
  • В чем разница, имеющая двойные кавычки или нет в bash
  • Почему двойные кавычки и backquotes в сценарии оболочки?
  • bash: невозможно установить переменную в сплошную строку
  • 2 Solutions collect form web for “Как скобки интерпретируются в командной строке?”

    Скобки обозначают подоболочку в bash. Чтобы процитировать страницу man:

     (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. 

    где list – это просто нормальная последовательность команд.

    Это на самом деле довольно портативный и не специфический только для bash . Спецификация языка командной оболочки POSIX имеет следующее описание синтаксиса (compound-list) :

    Выполнение составного списка в среде подсетей; см. « Среда выполнения оболочки» . Переменные назначения и встроенные команды, которые влияют на среду, не должны оставаться в силе после завершения списка.

    Список команд, встроенный в круглые скобки, выполняется как подоболочка.

    Переменные в подоболочке не видны вне блока кода в подоболочке. Они недоступны для родительского процесса, для оболочки, которая запустила подоболочку. Это, по сути, локальные переменные.

    См. Linuxtopia – Глава 20. Подледы

    Linux и Unix - лучшая ОС в мире.