No se puede unalias rm y dejar que sea una función en Zsh
-
03-07-2019 - |
Pregunta
Ejecuto sin éxito en mi .zshrc
unalias rm
rm() { mv $* /tmp/wastebasket }
Llego al inicio
/Users/Masi/.zshrc:unalias:34: no such hash table element: rm
Noté que el problema de la tabla hash ha sido un error no resuelto en Ubuntu para run-help.
No estoy seguro de si el error se aplica a Mac y también a rm
-command.
¿Cómo puedo desactivar la notificación en el inicio?
Solución
Todos los demás tienen razón en que simplemente no tenías un alias. Más importante:
NO HACER esto. Algún día estará en otra máquina POSIX que sigue los estándares POSIX (eliminando sin " reciclar "), y borrará algo de manera casual y no tendrá forma de deshacerlo. Aprenda disciplina rm ahora.
Otros consejos
Ese mensaje de error se debe a que está intentando desalinear rm
y no existe dicho alias.
Ya que puedes crear un alias de algo más de una vez sin un error, cambiaría tu código para que sea:
alias rm=x
unalias rm
rm() { mv $* /tmp/wastebasket }
Eso garantiza que rm
existe como un alias antes de que intentes deshacerlo.
No estoy muy familiarizado con zsh, pero quizás se deba a que rm no es un alias, pero en realidad es una utilidad estándar que reside en / bin.
Podrías simplemente crear un alias sin intentar aliarlo primero, anulando cualquier alias anterior.
Solo debe intentar eliminar un alias que existe. Crear un alias que no tenga alias de inmediato me parece feo. Mi recomendación es probar si rm es un alias y no tiene un alias si es así.
case $(type rm) in
(*alias*) unalias rm;;
esac
O use la fuerza bruta e ignore stderr con
unalias rm 2>/dev/null