无法unalias rm并让它成为Zsh中的一个函数

时间:2009-04-29 02:29:44

标签: zsh

我在.zshrc

中运行失败
unalias rm  
rm() { mv $* /tmp/wastebasket }

我参加了初创公司

/Users/Masi/.zshrc:unalias:34: no such hash table element: rm

我注意到哈希表问题是Ubuntu中针对run-help的一个未解决的错误。 我不确定该错误是否适用于Mac和rm命令。

如何在启动时关闭通知?

4 个答案:

答案 0 :(得分:15)

其他人都是对的,你根本就没有别名。更重要的是:

不要这样做。有一天你会在另一台符合POSIX标准的POSIX机器上(没有“回收”而删除),你会随便删除一些东西而无法撤消它。现在就学习rm学科。

答案 1 :(得分:1)

该错误消息是因为您尝试取消联合rm并且没有此类别名。

由于您可以在没有错误的情况下多次使用别名,我会将您的代码更改为:

alias rm=x
unalias rm  
rm() { mv $* /tmp/wastebasket }

这可以保证rm在您尝试取消它之前作为别名存在。

答案 2 :(得分:1)

我对zsh不太熟悉,但也许是因为rm不是别名,而是实际上是驻留在/ bin中的标准实用程序。

您可以在不尝试首先对其进行unalias的情况下对其进行别名,从而覆盖以前的任何别名。

答案 3 :(得分:1)

您应该只尝试删除存在的别名。 立即创建一个没有混淆的别名让我觉得难看。 我的建议是测试rm是否为别名,如果是,则进行unaliasing。

 case $(type rm) in
     (*alias*) unalias rm;;
 esac

或者使用暴力并忽略stderr

 unalias rm 2>/dev/null