Связывание с GCC не обнаруживает флаг -fPIC

Необходимо понять две вещи:

  1. В глобусе * соответствует нулю или более любого символа

  2. Форма $ {var1 # * - *} удаляет самое короткое совпадение .

Таким образом, $ {var1 # * - *} удалит только до первого дефиса, потому что это кратчайшее совпадение .

Для полноты заметьте, что $ {var1 ## * - *} удалит самое длинное совпадение.

Примеры

В каждом случае ниже удаляется самый короткий соответствующий префикс :

$ var1=abcd-1234-defg 
$ echo ${var1#*}
abcd-1234-defg
$ echo ${var1#*-}
1234-defg
$ echo ${var1#*-*}
1234-defg
$ echo ${var1#*-*-}
defg
$ echo ${var1#*-*-*}
defg

Сравните приведенное выше со случаем ## , который удаляет самый длинный соответствующий префикс:

$ echo ${var1##*-}
defg
$ echo ${var1##*-*}

$ 

Документация

Из man bash :

 $ {параметр # слово} 
 $ {параметр ## слово} 
 

Удалить совпадающий шаблон префикса. Слово расширяется для создания шаблона так же, как при раскрытии имени пути. Если шаблон соответствует началу значения параметра, то результатом раскрытия будет развернутое значение параметра с кратчайшим шаблоном соответствия (случай # ) или самый длинный совпадающий шаблон (случай ## ) удален. Если параметр - @ или *, операция удаления шаблона применяется к каждому позиционному параметру в череде, и раскрытие представляет собой результирующий список. Если параметр представляет собой переменную массива с индексами @ или *, операция удаления шаблона применяется к каждому члену массива по очереди, и раскрытие представляет собой результирующий список. [Курсив добавлен.]

-2
13.11.2018, 04:03
2 ответа

Это зависит от того, что запущено и обновляется. Ядро нужно перезапускать в любом случае. Если основной компонент, такой как glibc, обновляется, вам может потребоваться перезапустить каждое приложение. Если это так, перезагрузка является самым простым. Запустите обновление и введите lsof | grep deleted. Вы увидите, удерживает ли ядро ​​какие-либо из этих файлов открытыми.

5
28.01.2020, 05:14

Перезагрузка редко является обязательной, даже если об этом говорится в уведомлениях, но это проще, чем перезапуск всех зависимых служб и приложений. Изучите обновленные пакеты с помощью apt-cache show [package name]или apt changelog [package name], чтобы решить, есть ли критические обновления безопасности или вы можете обойтись без них до перезагрузки.

Поскольку вы упомянули, что у вас должны быть запущены важные программы, которые вы не хотите прерывать, я слышал, что можно livepatch обновления ядра без перезагрузки, но установка добавляет дополнительную сложность и поддержку, поэтому дистрибутивы не включать его автоматически.

2
28.01.2020, 05:14

Теги

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