1

如果我尝试

$ alias pwd=echo
$ alias echo=pwd

我明白了

$ pwd
/home/owen
$ echo hi
hi

似乎别名是递归遵循的。也许如果有办法停止递归,那会奏效。在此示例中,我可以使用builtin,但这通常不起作用,特别是对于-g别名。

4

2 回答 2

1

你想要的只是你的命令被扩展一次。

zsh 文档中所述;您可以通过引用来防止别名扩展。

这应该可以解决问题

$ alias pwd="\echo" ; alias echo="\pwd"
于 2013-11-27T01:35:13.297 回答
0

有两种方法可以等效于使用builtin不是内置 shell 命令的 for 命令

第一种是只使用您从中获得的命令的完整路径which。例如,

> which cat
/bin/cat
> /bin/cat

将运行cat,忽略您可能设置的任何别名。

另一种选择是使用/usr/bin/env. 例如,

> /usr/bin/env cat

也将cat在忽略cat您可能已设置的任何别名的情况下运行。

于 2013-09-24T03:46:19.657 回答