Impossible de unalias rm et que ce soit une fonction dans Zsh
-
03-07-2019 - |
Question
Je cours sans succès dans mon .zshrc
unalias rm
rm() { mv $* /tmp/wastebasket }
Je reçois au démarrage
/Users/Masi/.zshrc:unalias:34: no such hash table element: rm
J'ai remarqué que le problème de la table de hachage était un bogue non résolu dans Ubuntu pour l'aide à l'exécution.
Je ne sais pas si le bogue s'applique à Mac et à la rm
-command aussi.
Comment désactiver la notification au démarrage?
La solution
Tout le monde a raison de dire que vous n'aviez tout simplement pas d'alias. Plus important encore:
NE PAS faire ceci. Un jour, vous vous retrouverez sur une autre machine POSIX qui respecte les normes POSIX (suppression sans "recyclage"), vous effacez quelque chose par hasard et vous n'aurez aucun moyen de l'annuler. Apprenez la discipline maintenant.
Autres conseils
Ce message d'erreur vient du fait que vous essayez d'utiliser unalias rm
et qu'il n'existe aucun alias de ce type.
Étant donné que vous pouvez aliaser quelque chose plusieurs fois sans erreur, je modifierais votre code en:
alias rm=x
unalias rm
rm() { mv $* /tmp/wastebasket }
Cela garantit que rm
existe sous un alias avant d'essayer de le désaliasiser.
Je ne connais pas très bien zsh, mais c'est peut-être parce que rm n'est pas un alias, mais plutôt un utilitaire standard résidant dans / bin.
Vous pouvez simplement l'aliaser sans essayer de le désaliniser au préalable, en remplaçant tout alias précédent.
Vous devez uniquement essayer de supprimer un alias existant. Créer un alias sans alias tout de suite me semble moche. Ma recommandation est de tester si rm est un alias et unaliasing le cas échéant.
case $(type rm) in
(*alias*) unalias rm;;
esac
Ou utilisez la force brute et ignorez stderr avec
unalias rm 2>/dev/null