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