Como os scripts padrão são executados em subshells, o recurso que você precisa é de funções exportadas, disponível em bash , mas não em zsh .
Em bash , o local padrão para adicionar funções do usuário está em ~/.bashrc , mas isso não é executado, a menos que bash seja interativo (especificamente, não em um subshell executando um script), que as funções exportadas vencem.
O que parece funcionar, conforme esta resposta , é colocar as declarações de função em ~/.zshenv , que é executado por padrão em cada lançamento, interativo ou não.
Você também deve verificar a resposta anterior (aceita), que, entre outras coisas, explica o motivo pelo qual zsh não suporta funções exportadas.