Si vous définissez ou exportez une variable d'environnement dans bash, vous pouvez la désactiver . Si vous définissez un alias dans bash, vous pouvez le dé-alias . Mais il ne semble pas y avoir de dysfonctionnement .
Considérez cette fonction bash (triviale), par exemple, définie dans un fichier .bash_aliases et lue à l'initialisation du shell.
function foo () { echo "bar" ; }
Comment puis-je effacer cette définition de fonction de mon shell actuel?
(La modification des fichiers d'initialisation ou le redémarrage du shell ne compte pas.)
linux
command-line
bash
shell
Quack Quichotte
la source
la source
unfunction
serait un joli nom pour une commande :-)Réponses:
La commande intégrée unset prend une option
-f
,, pour supprimer des fonctions:Formez l' entrée non définie dans la page de manuel bash :
Remarque:
-f
n'est vraiment nécessaire que si une variable du même nom existe. Si vous ne disposez pas également d'une variable nomméefoo
,unset foo
la fonction sera supprimée.la source
-f
paramètre dans l' exportation mais je ne l' avais pas trouvé dans unset . Merci.unset
n'est pas une commande externe, elle fait partie du shell ( bash dans ce cas); essayez deman bash
trouver l'entrée pourunset
(la gestion est assez grande, seunset
trouve sous laShell Builtin Commands
section).Voir
help unset
:Il n'y a ni
unset --help
niman unset
malheureusement.la source
man unset
parce qu'il est un construit en commande et pour le haut- commandes il y a la placehelp
. Pour certaines commandes intégrées, il existe également un exécutable externe. En cas de doute, essayez par exempletype mycommnad
. Par exempletype unset
et il vous répondraunset is a shell builtin
. Si vous voulez savoir s'il existe, l'exécutable aussi essayezwhich echo
(un autre buikt-in) et il dira où il se trouve. Le--option_long
est typique de la commande exécutable. Essayezecho --help
et/bin/echo --help
.:-)
.help
place deman
. (Pas vraiment vrai car vous les trouvezman bash
dans le chapitre COMMANDES DE SHELL BUILTIN ou directement avecman BASH-BUILTINS
...). Il est confortable que sous un shell bash, vous pouvez simplement demanderhelp
et vous recevrez la liste des commandes intégrées:-)
. (Essayezhelp help
etman man
aussi).J'ai récemment voulu le désinstaller
nvm
et le réinstaller complètement , et me débarrasser de n'importe lequel de ses environnements. Il s'avère que s'en débarrasser ne semble pas, car une grande partienvm
est en partie implémentée comme une cargaison de fonctions de shell qui proviennent de votre shell via.bash_profile
ou.bashrc
, ou partout où vous avez ajouté les commandes de sourcing auxquelles il vous a dit lors de la première installation.Déconcerté au début en
which nvm
ne renvoyant rien encore clairement lanvm
commande et d'autres étaient toujours en cours de recherche, j'ai finalement découvert viadeclare -F
que c'était un tas de fonctions shell. Je ne voulais pas simplement tuer le shell et en commencer un nouveau (pour des raisons non pertinentes ici), j'ai donc effacé lesnvm
fonctions de ce shell avec ceci:Certaines variations à ce sujet pourraient être utiles à quelqu'un qui, pour une raison quelconque, veut faire quelque chose de similaire et ne peut pas redémarrer un nouveau shell ou ne veut pas.
la source