tcsh:别名"其中"休息" cd"

时间:2012-07-12 15:21:29

标签: tcsh

很多年前,我做了“哪个CD”,它告诉我“cd:shell内置命令”。

最近,我试了一下,得到了:

/ usr / bin / which:没有cd in([淫秽的长路径我不会在这里重现])

我调查过,发现有人有别名:

> which which 
which   alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde 
        /usr/bin/which 

一旦我解决了哪个,“哪个CD”再次正常工作。我的问题:

  • 如何使用别名和shell内置函数使“哪个”工作?

  • 我找不到创建“哪个”别名的位置(它不在 / etc / cshrc,〜/ .cshrc等例如)。这发生在哪里,所以我 可以永久地打败/编辑它吗?

编辑:感谢所有帮助过的人。我想我已经弄明白了:

  • “which”是内置的tcsh,与“/ usr / bin / which”不一样:
> unalias which; which which
which: shell built-in command. 
  • “unalias”几乎可以解决问题。它适用于内置 (如上所述)和别名(并正确识别反斜杠为 alias escape),如下所示:
 
> alias foo bar; which foo 
foo:     aliased to bar 

> which \foo 
foo: Command not found. 
  • 别名似乎来自我的/etc/profile.d/which2.csh 系统,这是奇怪的,因为我认为profile.d仅用于 sh / bash,而不是csh / tcsh

2 个答案:

答案 0 :(得分:1)

至少可以将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.

答案 1 :(得分:1)

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

尝试使用unariased命令:

 /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)

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