Определение функции оболочки: почему есть место после открытия скобки?

Вы, наверное, знаете эту вилку :

:(){ :|:&};: #WARNING: harmful code 

Интересно, почему необходимо, чтобы он разбирал, включить пробел после открытия фигурной скобки.

2 Solutions collect form web for “Определение функции оболочки: почему есть место после открытия скобки?”

{}

  { list; } 

Размещение списка команд между фигурными фигурными скобками приводит к тому, что список будет выполнен в текущем контексте оболочки. Не создается подоболочка. Требуется список точек с запятой (или новой строки).

В дополнение к созданию подоболочки существует тонкая разница между этими двумя конструкциями из-за исторических причин. Скобки зарезервированные слова, поэтому они должны быть отделены от списка пробелами или другими метасимволами оболочки. Скобки – это операторы и распознаются как отдельные маркеры оболочкой, даже если они не отделены от списка пробелами.

// источник

Я думаю, что @rush может дать правильный, вводящий в заблуждение ответ. Форк-бомба определяет функцию, называемую « : ». Код в фигурных скобках не выполняется до тех пор, пока функция не вызывается финальным « : ». Таким образом, фигурные скобки как командная группировка и фигурные скобки как тело функции синтаксически одинаковы, но имеют разную семантику.
Из того же документа, что и @rush, цитируется:

Обратите внимание, что по историческим причинам в наиболее распространенном использовании фигурные скобки, которые окружают тело функции, должны быть отделены от тела пробелами или символами новой строки. Это связано с тем, что фигурные скобки являются зарезервированными словами и распознаются только как таковые, когда они отделены от списка команд пробелом или другим метасимволом оболочки. Кроме того, при использовании фигурных скобок список должен быть прерван точкой с запятой, '&' или новой строкой.

  • динамический поиск zip-файлов в определенном пути и разархивировать его в той же папке с распакованными файлами?
  • Использовать командную строку для печати нескольких уникальных слов
  • найти проблему в скрипте bash
  • Как обеспечить, чтобы скрипт успешно выполнялся как транзакция
  • Сценарий Bash не детерминирован при выполнении действий
  • Загрузка выходного текста без файлов записи
  • Длина строки со сценарием оболочки
  • XOR переменной оболочки и двоичный файл
  • Обработка сообщения whois отказалось от сообщения в сценарии оболочки
  • Печать Линия соответствия и n-я строка из согласованной строки
  • Выполнить список команд с контрольной точкой?
  • Функция не выполняется в скрипте
  • Linux и Unix - лучшая ОС в мире.