How do I delete/remove a shell function? How do I delete/remove a shell function? shell shell

How do I delete/remove a shell function?


unset -f z

Will unset the function named z. A couple people have answered with:

unset z

but if you have a function and a variable named z only the variable will be unset, not the function.


In Zsh:

unfunction z

That's another (arguably better) name for unhash -f z or unset -f z and is consistent with the rest of the family of:

  • unset
  • unhash
  • unalias
  • unlimit
  • unsetopt

When in doubt with such things, type un<tab> to see the complete list.

(Slightly related: It's also nice to have functions/aliases like realiases, refunctions, resetopts, reenv, etc to "re-source" respective files, if you've separated/grouped them as such.)