質問: エイリアスコマンドで `which`を使用する方法は? ほとんどのユーザーと同様に、私は頻繁に使用されるプログラムにデフォルトのフラグセットを提供するために、多数のエイリアスを設定しています。例えば、alias vim='vim -x' alias grep='grep -e' alias ls='ls -g' 問題は、whichを使用してvim/grep/ls/etcがどこから来ているのかを確認したい場合、エイリアスが仕方:$ which vim vim: aliased to vim -x これは便利な出力ですが、この場合に探しているものではありません。 vimがvim -xのエイリアスであることは知っていますが、thatvimがどこから来ているのか知りたいです。whichを使用できるように一時的にエイリアスの定義を解除するのではなく、エイリアスをwhichで「アンラップ」して簡単に実行する方法はありますか?編集: whichは、シェルごとに異なる動作をするシェル組み込みであるようです。バッシュでは、siegexの--skip-aliasフラグの提案が機能します。ただし、私はzshを使用しています。似たようなものはありますか?
回答: typeとwhichは、シェルのタイプによって動作が異なります。bashでは、whichはpathに存在するコマンドです。 pathで指定したコマンドを検索します。 bash組み込みtype -p(pathのp)はwhichとまったく同じように動作します。zshでは、whichとtypeはどちらも組み込みであり、組み込みwhenceの部分関数です。 which -pはあなたが欲しいものです。パス検索を強制します。 (-pオプションはtype zshでは使用できません。) whence [-vcwfpamss] [-x num] name ... -p 別名、予約語、シェル関数、または組み込みであっても、名前のパス検索を実行します。 zshマニュアルの詳細。 which [-wpamss] [-x num] name ... whence -cと同等です。 zshでbuiltin whichをスキップしてwhichからコマンドpathを強制的に使用するには:alias which="command which"