Here-документ - это перенаправление вида:
<<[-]DELIMITER
....
....
....
DELIMITER
Необязательные -
(внутри скобок выше) изменяют способ сопоставления разделителя и позволяют отступать каждую строку внутри содержимого heredoc с табуляцией (пробелы не допускаются).
"Совпадает" означает, что разделитель сопоставляется с открывающим (как, например, когда DELIMITER
совпадает с <
<<-DELIMITER
).
Обратите внимание, что вы можете использовать один или несколько пробелов между <<
или <<-
, и словом, которое следует за ними).
Итак, подытожим основные законы сопоставления внутри singlar heredoc:
<<-DELIMITER
. Поскольку при прежнем синтаксисе никакие пробелы не могут предшествовать открывателю heredoc, если вы хотите сделать отступ, ваш единственный выбор - использовать следующий синтаксис, и вы должны использовать исключительно табуляции в начале каждой строки внутри содержимого heredoc.
Теперь у вас есть два варианта синтаксиса <<-
.
Используйте синтаксис <<-
для внутреннего heredoc.
bash << APACHE
...
...
cat <<- MOD_REWRITE
⇨ ...
⇨ ....
⇨ MOD_REWRITE
...
...
APACHE
(отступ - 4 пробела, табуляции обозначаются символами ⇨
)
Код, видимый bash
, будет точно таким же, как на вашем экране (т.е. bash
будет видеть отступ каждой строки так, как вы видите его сейчас). Когда внутренний heredoc будет выполнен, благодаря синтаксису <<-
, bash
удалит символы табуляции, ведущие каждую строку до разделителя MOD_REWRITE.
Используйте синтаксис <<-
для внешнего heredoc.
bash <<- APACHE
⇨ ...
⇨ ...
⇨ cat << MOD_REWRITE
⇨ ⇨ ...
⇨ ⇨ ....
⇨ MOD_REWRITE
⇨ ...
⇨ ...
APACHE
В этот раз код, видимый bash
, будет отличаться от того, что видите вы: он не будет содержать ведущей табуляции. Поэтому не проблема, что я использую синтаксис <<
для внутреннего heredoc: разделитель MOD_REWRITE будет находиться в начале строки.
В обоих случаях разделитель MOD_REWRITE распознается, и ваш конфигурационный файл Apache /etc/apache2/apache2.conf
не имеет отступов. Если вы хотите сделать отступы в его части, единственная возможность - использовать пробелы (после начальных табуляций, которые будут удалены).
Конечно, есть и третий вариант: использовать синтаксис <<-
для обоих heredoc, но это ничего не изменит по сравнению с вариантом 2, поскольку все ведущие табуляции удаляются, когда код отправляется в bash
.
Согласно ряду статей, которые я прочитал за последние пару лет, размещение / usr
в отдельном разделе ] не рекомендуется . Более того, части подсистем ОС пользователя выйдут из строя (в основном, незаметно).
Ссылки
Честно говоря, один из них взят из Fedora, но в статье довольно много говорится о том, что это не Это изменение, специфичное для Fedora.