Files
abonnel-www/7a2f79a2-768c-4682-8640-1888f1ad5a9d/index.md
T
2026-05-19 12:37:29 +02:00

1.7 KiB

Supprimer une fonction shell avec unset

Comment supprimer une fonction en Bash ? Comment effacer, retirer ou désenregistrer une fonction shell ? Comment annuler la définition d'une fonction Bash ? Quelle est la différence entre supprimer une variable et supprimer une fonction avec unset ? Pourquoi man unset ne fonctionne pas ?

En Bash, la commande intégrée unset sert à supprimer des variables, mais aussi des fonctions. Pour cibler explicitement une fonction, on utilise l'option -f (pour function) :

unset -f foo

Quand -f est-il vraiment nécessaire ?

D'après la documentation de Bash, sans option, unset essaie d'abord de supprimer une variable, puis se rabat sur une fonction si aucune variable de ce nom n'existe.

Autrement dit, -f n'est indispensable que si une variable et une fonction portent le même nom. Dans le cas contraire, un simple unset foo suffit.

Exemple complet

# Définition d'une fonction
foo() { echo "bonjour"; }

foo
# → bonjour

# Suppression
unset -f foo

foo
# → bash: foo : commande introuvable

Et voici le cas où -f fait toute la différence :

foo="une variable"
foo() { echo "une fonction"; }

unset foo        # supprime la variable
foo              # → une fonction (la fonction existe toujours)

unset -f foo     # supprime la fonction

Consulter la documentation

unset étant une commande interne à Bash (builtin), elle n'a ni page man unset ni option --help. Sa documentation se consulte avec :

help unset

À retenir

  • unset -f nom supprime explicitement une fonction.
  • unset nom suffit si aucune variable ne porte ce nom.
  • Pour la doc d'un builtin Bash : help <commande>, pas man.