Wie lösche / entferne ich eine Shell-Funktion?

180

Ich hab's gemacht:

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

Wie werde ich es los?

zu viel php
quelle

Antworten:

271
unset -f z

Deaktiviert die Funktion mit dem Namen z. Ein paar Leute haben geantwortet mit:

unset z

Wenn Sie jedoch eine Funktion und eine Variable mit dem Namen z haben, wird nur die Variable deaktiviert, nicht die Funktion.

Robert Gamble
quelle
Beachten Sie, dass dies für POSIX-kompatible Shells gilt, nicht nur für Bash.
Franklin Yu
2

In Zsh:

unfunction z

Das ist ein anderer (wohl besserer) Name für unhash -f zoder unset -f zund steht im Einklang mit dem Rest der Familie von:

  • unset
  • unhash
  • unalias
  • unlimit
  • unsetopt

Wenn Sie Zweifel an solchen Dingen haben, geben Sie ein un<tab>, um die vollständige Liste anzuzeigen.

( Ein wenig Zusammenhang: Es ist auch schön Funktionen haben / Aliase wie realiases, refunctions, resetopts, reenv, etc. zu „re- source“ entsprechenden Dateien, wenn Sie noch getrennt / sie als solche gruppiert.)

Micah Elliott
quelle