Как удалить / удалить функцию оболочки?

180

Я сделал это:

$ z() { echo 'hello world'; }

Как мне от этого избавиться?

слишком много PHP
источник

Ответы:

271
unset -f z

Будет сброшена функция с именем z. Пара человек ответили:

unset z

но если у вас есть функция и переменная с именем z, то будет отменена только переменная, а не функция.

Роберт Гэмбл
источник
Обратите внимание, что это относится к POSIX-совместимым оболочкам, а не только к Bash.
Франклин Ю
2

В зш:

unfunction z

Это другое (возможно, лучшее) имя для unhash -f zили unset -f zсоответствует остальной семье:

  • unset
  • unhash
  • unalias
  • unlimit
  • unsetopt

Если вы сомневаетесь в таких вещах, введите un<tab>полный список.

(Немного связанные: Это также хорошо иметь функции / псевдонимы , как realiases, refunctions, resetopts, reenvи т.д. , чтобы «повторно source» соответствующие файлы, если вы разделены / сгруппировали их как таковые.)

Мика Эллиотт
источник