Coloque suas funções em .zshenv .
.zshenv é originado em todas as invocações do shell, a menos que a opção -f esteja configurada. Ele deve conter comandos para definir o caminho de pesquisa do comando, além de outras variáveis de ambiente importantes. .zshenv não deve conter comandos que produzam saída ou assuma que o shell está anexado a um tty.
.zshrc é originado em shells interativos. Ele deve conter comandos para configurar aliases, funções, opções, atalhos de teclado, etc.