openSUSEでは、「which」コマンドは実際には更新され、別のアプリケーションである可能性が高くなりますが、他のディストリビューションでは組み込みコマンドです。
もしそうなら、PATHに "which"コマンドがある場合、デフォルトの組み込みコマンドは無視されますか?
これはcdコマンドや他の組み込みコマンドに適用されますか?
ベストアンサー1
質問がたくさんあります。答えてみましょう:
「どれ」が組み込み命令ですか?
はい
- 一部のシェル(csh、tcsh、zsh)に組み込まれたコマンド
- (lksh、mksh、ksh93、attsh) のエイリアストレース (ハッシュされた
type which
コマンドに対してシェルが印刷する内容 (詳細))hash
- (dash、bash、yash)の外部アプリケーション。
したがって、普遍的に簡単な答えはありません。
これを無視できますか?
実行順序は、常にエイリアス、特殊な組み込み関数(およびPATHから取得した後)、一般的な組み込み関数、および外部ユーティリティです。
書く:
- 特殊な組み込み関数はエイリアスを使用します。
- 一般的な組み込み機能はエイリアスまたは関数を使用します。
- PATHを使用している場合は、いつでも他の実行可能ファイルの前に実行可能ファイルを追加できます。
- また、一部のシェルは、パス検索で(%builtin)などの追加の組み込みコントロールを提供することがあります。Minix I (1989) グレーシェルまたはksh、bash、zshで有効/無効
openSUSEでは、「which」コマンドは別のアプリケーションですか?
はい、Fedora、Debian、その他多くのシステムでも同様です。しかし、この点において、貝殻は特別な発言権を持っているかもしれません。
他のディストリビューションに組み込まれたコマンドですか?
使用可能なファイルを決定するディストリビューションよりも使用するシェルに依存しています。ディストリビューションはファイルを選択し、シェルは組み込みファイルを選択します。
パスの「which」コマンドはデフォルトの組み込みコマンドをオーバーライドしますか?
いいえ。アプリケーションは、検索順序で実行される最後の要素であるためです。
これはcdコマンドや他の組み込みコマンドにも当てはまりますか?
Acd
は定期的な組み込みのため、エイリアスまたは関数でオーバーライドできます(Posixの用語では:パスに同じ名前の実行可能ファイルがある場合のみ)。