изменить сценарий bash, чтобы не требовался ввод данных пользователем.

Большая часть работы может быть изолирована. В /etc есть множество часто редактируемых файлов, которые можно отразить в /usr/local/etc. Поместите в них свои локальные изменения, и, как правило, они будут приняты. rc.confнемного запутанный, но вы можете поместить туда одну строку, чтобы взять что-то из других мест.periodic.confработает примерно так же.
rc.dфайлы (, если таковые )могут помещаться в /usr/local/etc/rc.d, отделяя их от системных.

Вам не нужно редактировать syslog.confили newsyslog.conf, потому что вы можете использовать небольшие файлы в /usr/local/etc/{newsyslog,syslog}.conf.d, чтобы делать то, что вы хотите. Копировать эти каталоги намного проще, чем редактировать исходные отдельные файлы. Существуют различные другие каталоги, оканчивающиеся на.d, куда вы можете поместить небольшие файлы, которые выполняются как часть исходного единого файла. Остерегайтесь syslog.conf.d. Вы должны заканчивать все имена файлов на .conf, иначе они будут проигнорированы!

Также есть (, например, в файлах /etcи /boot), оканчивающихся на .local. К ним относятся /boot/loader.conf.local. Они не очень хорошо отделены от основных системных каталогов, но тот факт, что они названы таким образом, облегчает их замечание и обслуживание.

Если у вас есть файлы конфигурации ядра, сохраните их в (скажем)/root/config. Затем перед билдкернелом сделайте на них символические ссылки в/sys/i386/conf(или еще где ). В противном случае обновление до /usr/srcуничтожит их -проще воссоздать символическую ссылку, чем воссоздать (или даже восстановить )файл конфигурации ядра.

Имейте в виду, что не все эти полезные вторичные файлы существуют по умолчанию. Вот почему вам нужно просмотреть справочные страницы для «основных» файлов, чтобы увидеть, какие альтернативы доступны.

Резюме
Для каждого файла, который вы редактируете, внимательно прочитайте его справочную страницу. В большинстве случаев вы можете отредактировать или создать локальный файл или поместить файлы в локальный каталог. Это централизует почти все это под /usr/local/etc.

0
17.07.2019, 03:01
1 ответ

Эта строка

    arg= 'read';

Поскольку после =есть пробел, эта строка временно устанавливает переменную argв пустую строку, а затем выполняет команду read, которая считывает данные из стандартного ввода --, поскольку вы не перенаправляете данные в read's stdin, пользователь должен ввести строку текста на терминале. readсохраняет ввод пользователя в переменную $REPLY. После этого переменная argбудет сброшена.

Чтобы присвоить строку 'read'переменной arg, нельзя ставить пробелы вокруг=


Эта часть выглядит подозрительно:while $arg; < /dev/tty; do--почему после $arg стоит точка с запятой?

2
28.01.2020, 02:29

Теги

Похожие вопросы