Incapaz de rm unalias e deixá-lo para ser uma função no Zsh
-
03-07-2019 - |
Pergunta
Eu corro sem sucesso na minha .zshrc
unalias rm
rm() { mv $* /tmp/wastebasket }
Eu fico na inicialização
/Users/Masi/.zshrc:unalias:34: no such hash table element: rm
Eu observei que o problema tabela hash tem sido um bug não resolvido em Ubuntu para run-ajuda.
Não estou certo se o bug se aplica ao Mac e rm
-command também.
Como você pode obter a notificação off na inicialização?
Solução
Todo o resto é certo que você simplesmente não tem um apelido. Mais importante:
NÃO fazer isso. Algum dia você vai estar em outra máquina POSIX que segue padrões POSIX (apagar sem "reciclagem"), e você vai casualmente apagar alguma coisa e não temos nenhuma maneira de desfazê-lo. Saiba disciplina rm agora.
Outras dicas
Essa mensagem de erro ocorre porque você está tentando rm
unalias e não existe tal apelido.
Uma vez que você pode apelido algo mais do que uma vez sem um erro, eu mudaria seu código seja:
alias rm=x
unalias rm
rm() { mv $* /tmp/wastebasket }
que garante que rm
existe como um alias antes de tentar unalias-lo.
Eu não estou muito familiarizado com zsh, mas talvez seja porque rm não é um apelido, mas na verdade é um utilitário padrão residente em bin /.
Você poderia somente o alias sem tentar unalias pela primeira vez, substituindo qualquer apelido anterior.
Você só deve tentar remover um alias que existe. Criando um alias que é unaliased imediatamente me parece feio. Minha recomendação é teste para rm sendo um alias e unaliasing se assim for.
case $(type rm) in
(*alias*) unalias rm;;
esac
Ou força bruta uso e ignorar stderr com
unalias rm 2>/dev/null