如果我尝试
$ alias pwd=echo
$ alias echo=pwd
我得到了
$ pwd
/home/owen
$ echo hi
hi
似乎别名是递归跟随的。也许如果有办法阻止递归,那就行了。在此示例中,我可以使用builtin
,但这通常不起作用,特别是对于-g
别名。
答案 0 :(得分:1)
你想要的就是你的命令被扩展一次。
如the zsh documentation中所述;您可以通过引用来阻止别名扩展。
这应该可以解决问题
$ alias pwd="\echo" ; alias echo="\pwd"
答案 1 :(得分:0)
对于不是内置shell命令的命令,有两种方法可以使用builtin
等效
第一种方法是使用从which
获得的命令的完整路径。例如,
> which cat
/bin/cat
> /bin/cat
将运行cat
,忽略您可能设置的任何别名。
另一种选择是使用/usr/bin/env
。例如,
> /usr/bin/env cat
也会运行cat
而忽略您可能设置的cat
的任何别名。