Что делает автозагрузка в zsh?

Мне не удалось найти документацию для широко используемой команды autoload в zsh. Кто-нибудь может объяснить это на простом английском языке?

Немного более конкретно: что означает автозагрузка модулей, например, в этой строке:

autoload -Uz vcs_info

Что он делает?


Я пробовал autoload --help, man autoload, googling - без успеха. Спасибо!

Ответ 1

Функция autoload недоступна в bash, но она есть в ksh (оболочка korn) и zsh. На zsh см man zshbuiltins.

Функции вызываются так же, как и любая другая команда. Между программой и функцией может возникнуть конфликт имен. Что делает autoload, так это помечает это имя как функцию, а не как внешнюю программу. Функция должна находиться в отдельном файле, имя файла должно совпадать с именем функции.

autoload -Uz vcs_info

-U означает пометить функцию vcs_info для автозагрузки и подавить расширение псевдонимов. -z означает использование стиля zsh (а не ksh). Смотрите также команду functions.

Изменить (из комментария, как предложено @ijoseph):

Таким образом, он фиксирует тот факт, что имя является функцией, а не внешней программой - он не вызывает ее, если не -X опция -X, он просто влияет на путь поиска при его вызове. Если имя функции не совпадает с именем программы, это не требуется. Добавьте к вашим функциям что-то вроде f_ и вам это, вероятно, никогда не понадобится.

Для получения дополнительной информации см. Http://zsh.sourceforge.net/Doc/Release/Functions.html.