2

zsh を oh-my-zsh フレームワークと一緒にしばらく使用することで、zsh と bash ではどのコマンドの動作が異なるかに気付きました。

私が意味したのは:

# on zsh
ilias@ilias-pc ~  ➜ which ls
ls: aliased to ls --color=auto
ilias@ilias-pc ~  ➜ which which
which: shell built-in command
ilias@ilias-pc ~  ➜ bash
[ilias@ilias-pc ~]$ which ls
/usr/bin/ls
[ilias@ilias-pc ~]$ which which
/usr/bin/which
[ilias@ilias-pc ~]$ 

これはなぜ発生し、どうすれば「修正」できますか?

PS。これを Arch Linux で再現します (問題があるかどうかはわかりませんが、言及します)。

4

2 に答える 2

7
$ zsh -c 'type which'
which is a shell builtin
$ bash -c 'type which'
which is /usr/bin/which

解決策は、を使用しないことwhich(1)です。これは非標準であり、あまり有用ではないコマンドです。代わりに何を使用すべきかという質問は、代替案の指定が不十分で一貫性がないため、最も簡単ではありませんが、よりも優れていwhichます。

要件に応じて、、、、またはが必要です(commandオプションを参照-v)。前者についてはPOSIXを、後者についてはシェルのマニュアルを参照してください。(Bashはwhenceをサポートしていませんが、一貫性はありませんが、他のほとんどのksh派生物によってサポートされています。通常、ほとんどの機能を備えています)。typewhence

于 2013-01-07T12:43:40.033 に答える
6

ZSHでは、(関数の定義を表示する)whichと同等であり、 (実行可能パスを通知する)ではありません。それを変更したい場合は、エイリアスを作成してください。whence -cwhence -p

于 2013-01-07T12:43:17.437 に答える