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


180

Ich hab's gemacht:

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

Wie werde ich es los?

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.


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.)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.