Zsh позволяет пользователю определять собственные функции, которые могут выполняться точно также как и обычные программы. Функции выполняются в том же процессе, что и вызвавшая их программа. При вызове функции аргументы передаются как позиционные параметры.
Для ускорения загрузки Zsh может использовать
автоматически загружаемые функции, когда они только объявляются,
но не считываются. При первом использовании такой функции
происходит ее считывание и компиляция. Для объявления
автоматически загружаемой функции используется встроенная команда
autoload (или ее налоги
`functions -u
' и
`typeset -fu
'). Поиск определений
функций осуществляется по каталогам, перечисленным в переменной
fpath
.
Кроме обычных функций, Zsh позволяет определять функции со
специальным значением. Так, например, функция
chpwd вызывается при изменении рабочего
каталога, а функции precmd и
preexec выполняются перед каждым выводом
приглашения и перед выполнением считанной команды
соответственно. Кроме того, может быть определена функция
periodic, которая может выполнятся через каждые
$PERIOD
(если этот параметр определен) секунд
перед выводом приглашения.