Дана переменная
myString='there are spaces in this line.'
вы можете удалить самый длинный начальный компонент, оканчивающийся пробелом, используя расширение параметра ${myString##* }
, например.
$ myString='there are spaces in this line.'
$ echo "${myString##* }"
line.
$
$ myString='this line has many spaces.'
$ echo "${myString##* }"
spaces.
Ядро Linux по умолчанию добавляет маршрут «устройство» для каждого адреса (как IPv4, так и IPv6 ). То есть маршрут onlink для подсети, в которой находится префикс.
Во-первых, этот автоматически добавленный маршрут всегда имеет фиксированную метрику (256 в случае IPv6 ). Это не то, чего хочет NetworkManager. В NetworkManager вы можете настроить метрику маршрута с помощью параметра ipv6.route-metric
, который (, если не указано ), имеет значение по умолчанию, которое зависит от типа устройства. Например. в Ethernet метрика маршрута по умолчанию равна 50.
Кроме того, при использовании autoconf/SLAAC, в зависимости от объявления маршрутизатора, префикс может отсутствовать на ссылке -. В таком случае было бы неправильно вообще добавлять такой маршрут устройства.
По этой причине NetworkManager всегда добавляет адреса с флагом noprefixroute, чтобы ядро не добавляло маршрут автоматически. Конечно, NetworkManager настроит подходящий /64 по мере необходимости.
Если вы настраиваете статический адрес в NetworkManager, например. через nmcli connection modify "$PROFILE" +ipv6.addresses "1:2:3:4::1/64" && nmcli connection up "$PROFILE"
, то вы должны увидеть соответствующий маршрут 1 :2 :3 :4 ::/64.
Флаг "noprefixroute", похоже, не является вашей настоящей проблемой. Флаг установлен не просто так. Если конфигурация IP, которую настраивает NetworkManager, не подходит, возможно, существует другая проблема.