许多年前,我做了“which cd”,它告诉我“cd: shell built-in command”。
最近,我尝试了一下,得到:
/usr/bin/which: no cd in ([路径太长了,我不会在这里重现])
我调查并发现有人使用了别名:
> which which
which alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde
/usr/bin/which
一旦我取消了其中的别名,“哪个 cd”又可以正常工作了。我的问题:
如何让“which”同时使用别名和 shell 内置插件?
我找不到创建“哪个”别名的位置(例如,它不在 /etc/cshrc、~/.cshrc 等中)。这是在哪里发生的,所以我可以永久地击败/编辑它?
编辑:感谢所有帮助过的人。我想我已经弄清楚了:
- "which" 是 tcsh 内置的,与 "/usr/bin/which" 不同:
> unalias which; 哪个哪个 其中:shell 内置命令。
- “unalias which”几乎可以解决问题。它适用于内置函数(如上)和别名(并正确地将反斜杠识别为别名转义),如下所示:
> 别名 foo bar; 哪个富 foo:别名为 bar > 其中\foo foo:找不到命令。
- 别名似乎来自我系统上的 /etc/profile.d/which2.csh,这很奇怪,因为我认为 profile.d 仅适用于 sh/bash,而不适用于 csh/tcsh