Является ли мой более простой фрагмент оболочки таким же, как исходный?

Преамбула:ipи ifconfigявляются утилитами для управления и мониторинга сети. Обычно они не используются для чтения/записи постоянных файлов конфигурации -, поэтому ip linkне работает. Постоянное управление конфигурацией должно выполняться другими средствами, такими как NetworkManager.

(Скорее всего, нет необходимости говорить об этом, но, как примечание, iproute2, который обеспечивает ip, , был принят или принимается многими дистрибутивами в качестве замены для net-tools, который обеспечивает ifconfig. Они часто поставляются как пакеты по умолчанию в дистрибутивах из соображений совместимости ).

Почему ifupсработало, а systemctl restart NetworkManagerнет:

В CentOS (Я проверил для CentOS 7 ), ifupи ifdownпредоставлены initscripts; они работают со сценариями в /etc/sysconfig/network-scripts/, предоставленными тем же пакетом. Таким образом, неудивительно, что ifupможно применить сделанные там изменения.

NetworkManager -поставщик сетевых услуг по умолчанию, унаследованный CentOS от восходящего потока -в Red Hat и Fedora, настроен на использование подключаемого модуля ifcfg-rhдля чтения/записи конфигурации сети из /etc/sysconfig/network-scripts/ifcfg-*.Но он не отслеживает эти файлы.

man nm-settings-ifcfg-rhпредупреждает, что

Users can create or modify the ifcfg-rh connection files manually, even if that is not the recommended way of managing the profiles. However, if they choose to do that, they must inform NetworkManager about their changes (see monitor-connection-file in nm-settings(5), and nmcli con (re)load).

Таким образом, systemctl reload NetworkManagerне должен перезагружать конфигурацию сетевого соединения из файла в CentOS. Для этого вы можете вызвать nmcli connection reloadили изменить конфигурацию NetworkManager, как указано в man NetworkManager.conf:

.

monitor-connection-files
Whether the configured settings plugin(s) should set up file monitors and immediately pick up changes made to connection files while NetworkManager is running. This is disabled by default; NetworkManager will only read the connection files at startup, and when explicitly requested via the ReloadConnections D-Bus call. [...]

0
02.12.2020, 21:19
1 ответ

Эти два подхода, кажется, используют разную логику:

[ $# -eq 3 ] && exit_code=$3 || exit_code=1

Это будет, тогда и только тогда, когда , количество позиционных параметров($#)равно ровно трем, установит переменную exit_codeравной значению третьего позиционного параметра; в противном случае он должен быть установлен равным 1.

exit_code=${3:-1}

Это установит exit_codeна значение третьего позиционного параметра (или на 1, если он не установлен ), независимо от того, существует ли больше, чем три позиционных параметра.


Подводя итоги :В первом случае exit_codeбудет установлено значение 1, если число позиционных параметров не равно точно трем; второй не зависит от количества позиционных параметров.

7
18.03.2021, 22:45

Теги

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