Come posso eliminare / rimuovere una funzione shell?


180

Ho fatto questo:

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

Come posso liberarmene?

Risposte:


271
unset -f z

Disinserirà la funzione denominata z. Un paio di persone hanno risposto con:

unset z

ma se si dispone di una funzione e di una variabile denominata z, solo la variabile verrà disattivata, non la funzione.


Questo si applica alle shell conformi a POSIX , non solo a Bash.
Franklin Yu,

2

In Zsh:

unfunction z

Questo è un altro nome (probabilmente migliore) per unhash -f zo unset -f zed è coerente con il resto della famiglia di:

  • unset
  • unhash
  • unalias
  • unlimit
  • unsetopt

In caso di dubbi, digitare un<tab>per visualizzare l'elenco completo.

(Un po 'correlato: E' anche bello avere funzioni / pseudonimi come realiases, refunctions, resetopts, reenv, ecc per "ri- source" rispettivi file, se hai separati / le abbiamo suddivise in quanto tale.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.