「どこで」と「どの」の違いは何ですか? [コピー]

「どこで」と「どの」の違いは何ですか? [コピー]

私は読んだ「どれ」、しかしすべてしかし、私はその違いを本当に理解することはできません。私は64ビットdebian-busterでzsh 5.4.2を実行しています。 whichとwhenceはどちらもシェル組み込み関数です。

人々はどこでどちらがより適切であるか、その逆であるかを指摘できますか?

/home/shirish> zsh --version
zsh 5.4.2 (x86_64-debian-linux-gnu)

/home/shirish> type -a which
which is a shell builtin
which is /usr/bin/which
which is /bin/which

/home/shirish> type -a whence
whence is a shell builtin

答え1

whichcshコマンド(cshあなたのコマンドを読むスクリプト~/.cshrc)、sに対するwhenceKornシェルcshの応答whichtypeBourneシェルコマンド、command -v/VPOSIXコマンド...

zshkshいくつかの拡張を実装しましたが、csh常習者とPOSIX準拠のためのエイリアスwhenceも提供しました。これは同じコマンドですが、デフォルトの動作は異なります。whichtypecommand -v/V

  • which)のwhence -cためcですcsh
  • typeはいwhence -v(詳細はwhence
  • whereはいwhence -ca
  • POSIXはcommand -v次のとおりです。whence
  • POSIXはcommand -V次のとおりです。whence -v

詳細は以下で確認できます(少し混乱はありますが申し訳ありません)。「which」を使わないのはなぜですか?それでは何を使うべきですか?

答え2

[-vcfpam]名前はどこから来たのですか... 各名前に対してコマンド名として使用される場合、どのように解釈されるかを表示します。この-vフラグはより詳細なレポートを生成します。この-cフラグはcshに似た形式で結果を印刷します-v。この-fフラグを使用すると、シェル関数の内容が表示されますが、-cこのフラグを使用しないと発生しません。この-pフラグは、別名、予約語、シェル関数、または組み込み関数であっても、名前のパス検索を実行します。この-aフラグは、コマンド・パス全体でその名前がす​​べて検索されます。この-mフラグを使用すると、引数はパターンとして処理され(引用符で囲む必要があります)、これらのパターンのいずれかに一致する各コマンドに関する情報が表示されます。

ここで[-pam]の名前... -c と同じです。

確認する必要がありますzsh マニュアル

関連情報