【问题标题】:tcsh: aliasing "which" breaks "which cd"tcsh:别名“which”会破坏“which cd”
【发布时间】:2012-07-12 15:21:29
【问题描述】:

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

一旦我取消了 which 的别名,“which cd”又可以正常工作了。我的问题:

  • 如何让“which”同时使用别名和 shell 内置插件?

  • 我找不到“which”别名的创建位置(不在 /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

【问题讨论】:

    标签: tcsh


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2018-02-18
        • 2011-05-27
        • 2011-03-27
        • 2012-05-13
        • 1970-01-01
        • 1970-01-01
        • 2020-01-18
        • 2015-02-05
        • 1970-01-01
        相关资源
        最近更新 更多