Если собственный инструмент не поддерживает включение файлов, вы можете использоватьm4
.
Чтобы показать упрощенный пример, вот два входных файла:
vsftpd.conf.m4
# line one is a comment
anonymous_enable=YES
include(`includeme.m4')dnl
includeme.m4
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
Имея эти два файла в вашем текущем каталоге, выполните m4 vsftpd.conf.m4 > vsftpd.conf
, чтобы сгенерировать этот файл vsftpd.conf:
# line one is a comment
anonymous_enable=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
Для m4 есть довольно большой мануал; см. info m4
или веб-руководство GNU M4 .
Единственная функция, которую я использую для включения файлов, — это макрос include
. Синтаксис (без изменения символов кавычек по умолчанию )требует наличия обратной кавычки и одинарной кавычки, чтобы окружить имя файла, которое вы хотите включить. Маркер dnl
в конце сообщает m4
, что вы не хотите, чтобы он печатал новую строку после обработки инструкции.
Такой способ управления файлом означает, что вам нужно позаботиться об обновлении файлов m4 вместо файла vsftpd.conf
. Вы можете добавить файл README
в каталог с предупреждением; Я также видел, как люди использовали Makefile
с рецептом для создания файла конфигурации с помощью простой команды make
. Присутствие любого файла может дать администратору достаточную паузу для их просмотра. Вы также можете включить в файл vsftpd.conf.m4 заголовок, говорящий что-то вроде:
"# This file was generated with m4 -- edit vsftpd.conf.m4 instead!"
как еще одно предупреждение.