web-dev-qa-db-fra.com

Comment puis-je désiertographier ou vous débarrasser d'une fonction Bash?

Si vous définissez ou exportez une variable d'environnement dans BASH, vous pouvez non défini. Si vous définissez un alias à bash, vous pouvez NALIAS IT. Mais il ne semble pas y avoir de omfonction.

Considérez cette fonction (trivial) bash, par exemple, définie dans un .bash_aliases Fichier et lire à l'initialisation de Shell.

function foo () { echo "bar" ; }

Comment puis-je effacer cette définition de fonction de mon shell actuel?
[.____] (modification des fichiers d'initialisation ou redémarrer la coque ne compte pas.)

37
quack quixote

La commande nonset commande intégrée prend une option, -f, pour supprimer des fonctions:

unset -f foo

Formulaire non défini Entrée dans le Bash Manpage:

Si -f est spécifié, chaque nom fait référence à une fonction shell et la définition de la fonction est supprimée.

Noter: -f n'est vraiment nécessaire que si une variable avec le même nom existe. Si vous n'avez pas aussi une variable nommée foo, alors unset foo supprimera la fonction.

58
Chris Johnsen

Je voulais récemment désinstaller complètement nvm et le réinstaller et vous débarrasser de l'un de ses environnements. S'avère que se débarrasser de cela ne semble pas parce que beaucoup de nvm est en partie mise en pièce comme une charge de bateau de fonctions de shell provenant de votre coquille via .bash_profile ou alors .bashrc, ou où que vous ayez ajouté ces commandes d'approvisionnement, il vous a dit que lorsque vous l'avez installée pour la première fois.

Déconcerté au début par which nvm Renvoyer encore clairement le commandement nvm et d'autres étaient toujours trouvés, j'ai finalement découvert via declare -F que c'est une bouquet de fonctions de shell. Je ne voulais pas simplement tuer la coquille et commencer une nouvelle (pour des raisons non pertinentes ici), donc j'ai effacé nvm fonctionne de cette coquille avec ceci:

for F in `declare -F | grep -e nvm | cut -f 3 -d\ `; do unset -f $F; done

Certaines variations sur cela pourraient être utiles à une personne là-bas que, pour une raison quelconque, veut faire quelque chose de similaire et ne peut pas redémarrer une nouvelle coquille ou ne veut pas.

0
slowkoni