0

许多年前,我做了“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
4

2 回答 2

0

至少你可以添加alias which which到 ~/.cshrc :P

:~> alias which /usr/bin/which
:~> which which
/usr/bin/which
:~> which cd
/usr/bin/which: no cd in [...]
:~> alias which which
:~> which which
which:   aliased to which
:~> which cd
cd: shell built-in command.
于 2012-07-12T15:31:57.233 回答
0

在 Redhat 系统上,它看起来像是在 /etc/profile.d/which.sh 中定义的

要尝试我所做的无别名命令:

 /usr/bin/which cd
/usr/bin/which: no cd in (/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)

所以我不确定你的内置输出来自哪里。

于 2012-07-12T15:33:28.820 回答