重複の可能性:
CDはなぜプログラムではないのですか?
一般的に使用されている他のすべてのユーティリティ(などls, cp, rm
)は、実際には/ binにあるファイルであることがわかりました。しかし、そうではcd
ありません。また、他のバイナリディレクトリ(例:など)にもありません/usr/bin, /bin, /sbin
。
なぜこれが起こるのですか?
ベストアンサー1
cd
は内蔵ケース。したがって、別々の実行可能ファイルではなく、シェル自体の一部です。
デフォルトでは、組み込み関数には2つのカテゴリがあります。
- 特殊組み込み機能シェルと密接に接続されており、独立して実装できないか、それを行うことが機能的な意味を持たないため、実装できません(主にシェル制御に関連しています)。彼らは特定の特徴を持っているので、「特別」と呼ばれます。エラー処理と変数の割り当て意味論。
- 一般的な組み込み機能通常、パフォーマンス上の理由からシェルの内部(たとえば
cd
)を操作またはそうすることは技術的により簡単なため、シェルで実装されます。場合によっては、通常の組み込みが組み込まれていない形で存在することがあります。後者の場合の例は、echo
すべての現代のシェルで実装されていますが、主に歴史的な理由で存在することです/bin/echo
。
重要な機能を組み込む必要があるもう1つの理由は、システムに致命的なことが発生してもコア機能にアクセスでき続けることです。たとえば、共有ライブラリが破損しているかアクセスできない場合、/bin
。/sbin