завершение zsh :полные файлы в заданном каталоге

glibc обратно совместим, поэтому код, созданный для работы с glibc 2.27, должен работать и с glibc 2.29.

Чтобы реализовать обратную совместимость, glibc использует управление версиями символов, чтобы отметить, когда была введена функция. Если функция когда-либо меняет поведение (, особенно при изменении прототипа ), для этой версии будет введена новая версия символа. Но код, созданный с помощью старой glibc (, который зависит от старого поведения ), все равно будет привязан к старой версии символа со старым поведением.

Большинство дистрибутивов Linux на самом деле не поддерживают параллельную установку нескольких версий glibc, поскольку они должны быть установлены по путям, включающим полную версию (имя самой библиотеки,называется "SONAME", одинакова для всех версий glibc, поэтому не может использоваться сама по себе для их различения. )Но тогда возникает проблема с тем, чтобы решить, какой из них использовать для какого двоичного файла. Итак, вам нужны отдельные загрузчики (динамические компоновщики )для каждой версии библиотеки, но затем вам нужно установить интерпретатор при сборке бинарников для каждой версии (или исправить интерпретатор на существующих бинарниках. )Короче говоря, можно установить несколько версий glibc, но это сложная установка, и ее очень сложно использовать.

Если ваше приложение действительно нуждается в glibc 2.27 и не работает с glibc 2.29 (, но, как упоминалось выше, это должно работать, так что это будет ошибкой в glibc 2.29 ), то лучше всего запустить его в дистрибутиве Linux, который по умолчанию поставляет glibc 2.27.

Если смена дистрибутива Linux на вашем хосте невозможна, рассмотрите возможность запуска приложения в контейнере и создайте образ контейнера из дистрибутива с соответствующей версией glibc.

1
13.07.2020, 10:42
1 ответ

Имя файла — аргумент 1, поэтому передайте 1в_arguments. Позиция 1 принимает (как )аргумент, поэтому аргумент _argumentsвыглядит как 1:description:code to do the completion. Чтобы указать, какие файлы необходимо завершить, передайте параметры в _files, некоторые из которых унаследованы от_path_files:-Wдля завершения внутри заданного каталога, -gдля соответствия определенному шаблону, который может включать квалификаторы glob для ограничить типы файлов. Используйте _path_filesвместо _files, потому что _filesвсегда предлагает каталоги, тогда как с _path_filesкаталоги не предлагаются, если -gне пропускает их.

args=( …
  '1:thing:_path_files -W ~/data -g "*(.)"'
)

Если вы хотите написать комментарий, просто напишите комментарий обычным способом.#compdef …в первой строке — магический комментарий, сообщающий zsh, что этот файл содержит функцию завершения для my-script. Это эквивалентно наличию compdef _my-script my-scriptв вашем файле инициализации. Он должен быть на первой линии.

2
18.03.2021, 23:20

Теги

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