zsh
есть функция завершения команд в PATH
именем _path_commands
. Вы можете настроить завершение, чтобы использовать его для myFunc
, запустив:
compdef _path_commands myFunc
Примечание: для этого требуется, чтобы система завершения zsh была инициализирована. Обычно (как установлено в compinstall
) это происходит в вашем ~/.zshrc
с
# some zstyle configurations
autoload -Uz compinit
compinit
Любые вызовы compdef
должны выполняться после compinit
. Если вы получаете ошибки "команда не найдена" при запуске compdef
, я предлагаю настроить систему завершения с помощью compinstall
.
Примечание: в целях безопасности zsh будет выдавать ошибки, если какие-либо каталоги в вашем $ fpath доступны для записи во всем мире. Если вы получили ошибку:
zsh compinit: небезопасные каталоги, запустите compaudit для списка. Игнорировать небезопасные каталоги и продолжить [y] или прервать compinit [n]?
Не просто нажмите y, а нажмите n и попробуйте compaudit | xargs chmod g-w
как предложено на https://stackoverflow.com/questions/13762280/zsh-compinit-insecure-directories