Corrija-me se não estiver certo, mas abra $HOME/.zshrc com nano , adicione algumas alterações e salve. Em seguida, você tenta adicionar e confirmar $HOME/config/ , mas não há alterações feitas nesse diretório, portanto, nenhuma confirmação é feita. Em seguida, você chama zshrd e substitui o $HOME/.zshrc com $HOME/config/.zshrc alterado anteriormente, o que nunca mudou.
Acho que você deve ligar para nano $HOME/config/.zshrc no seu script.
Em seguida, sua função alteraria o $HOME/config/.zshrc , confirmaria suas alterações e, em seguida, substituiria o $HOME/.zshrc pelo novo $HOME/config/.zshrc e o recarregaria.