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

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

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

или

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

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

  • Параметр игнорируется при цитировании
  • Ошибка с именем файла, содержащим круглые скобки
  • Измените каталог с пробелом, за которым следует '('
  • Как назначить пространственно-содержащиеся значения для переменных в bash, используя eval
  • Параметр синтаксического анализа скрипта Bash с кавычками
  • Как использовать переменные в команде sed
  • -bash:! '@ 10.109.10.142/?ip=10.109.8.39: событие не найдено
  • Как предотвратить перемещение символов в переменной среды?
  • 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 - лучшая ОС в мире.