0

何年も前に、私は「どのcd」を実行し、「cd:シェルビルトインコマンド」と表示されました。

最近、私はそれを試してみました:

/ usr / bin / which:CDがありません([ここでは再現しない非常に長いパス])

調査したところ、誰かがエイリアスを作成していることがわかりました。

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

エイリアスを解除すると、「どのCD」が再び正しく機能しました。私の質問:

  • エイリアスとシェルビルトインの両方で「どちら」を機能させるにはどうすればよいですか?

  • 「which」エイリアスが作成された場所が見つかりませんでした(たとえば、/ etc / cshrc、〜/ .cshrcなどにはありません)。これはどこで発生するので、永久に無効化/編集できますか?

編集:助けてくれたすべての人に感謝します。私はこれを理解したと思います:

  • 「which」はtcshに組み込まれており、「/ usr / bin/which」と同じものではありません。
> unalias which; どれ
which:シェルビルトインコマンド。
  • 「unaliaswhich」はほとんどトリックを行います。以下のように、ビルトイン(上記のように)とエイリアスで動作します(バックスラッシュをエイリアスエスケープとして正しく認識します)。
 
>エイリアスfooバー; どのfoo
foo:バーにエイリアス

>どの\foo
foo:コマンドが見つかりません。
  • エイリアスは私のシステムの/etc/profile.d/which2.cshから来ているように見えますが、profile.dはcsh/tcshではなくsh/bash専用だと思っていたので奇妙です。
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 に答える