Impossibile unalias rm e lasciare che sia una funzione in Zsh
-
03-07-2019 - |
Domanda
Corro senza successo nel mio .zshrc
unalias rm
rm() { mv $* /tmp/wastebasket }
Ottengo all'avvio
/Users/Masi/.zshrc:unalias:34: no such hash table element: rm
Ho notato che il problema della tabella hash è stato un bug irrisolto in Ubuntu per run-help.
Non sono sicuro che il bug si applichi anche al Mac e al comando rm
.
Come puoi disattivare la notifica all'avvio?
Soluzione
Tutti gli altri hanno ragione sul fatto che semplicemente non avevi un alias. Ancora più importante:
NON farlo. Un giorno ti troverai su un altro computer POSIX che segue gli standard POSIX (eliminando senza "riciclaggio") e eliminerai casualmente qualcosa e non avrai modo di annullarlo. Impara ora la disciplina rm.
Altri suggerimenti
Questo messaggio di errore è perché stai cercando di unire rm
e non esiste un tale alias.
Dal momento che puoi alias qualcosa più di una volta senza errori, cambierei il tuo codice in:
alias rm=x
unalias rm
rm() { mv $* /tmp/wastebasket }
Ciò garantisce che rm
esiste come alias prima di provare a uniarlo.
Non ho molta familiarità con zsh, ma forse è perché rm non è un alias, ma in realtà è un'utilità standard residente in / bin.
Potresti semplicemente alias senza tentare di uniarlo prima, ignorando qualsiasi alias precedente.
Dovresti solo provare a rimuovere un alias esistente. Creare un alias che non ha eguali subito mi sembra brutto. La mia raccomandazione è di verificare che rm sia un alias e unaliasing in tal caso.
case $(type rm) in
(*alias*) unalias rm;;
esac
Oppure usa la forza bruta e ignora stderr con
unalias rm 2>/dev/null