Ответ 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.