回答:
通常はわかりやすいC
です。コマンドls
とパッケージは、(ほとんどの)Linuxディストリビューション(および他のいくつかのシステム)pwd
のGNU Coreutils
パッケージから提供されます。あなたは彼らのホームページでコードを見つけることができます。
coreutils
具体的には、通常の手順でそれらを構築:ソースを開梱した後、問題:
./configure --prefix=/some/path
# type ./configure --help to get the available options
make
make install # could require root access depending on the path you used
ディストリビューションのコピーにそれらのような基本ユーティリティをインストールすることは悪い考えです。そのためにシステムに付属しているパッケージマネージャを使用します。ただし、別のプレフィックスにインストールすることもできます(実験したい場合は、ホームディレクトリのどこかにインストールすることをお勧めします)。
けれどもという注意がありcd
、実行可能、cd
あなたはほとんどの状況で使用することがありますが、別の実行可能ではありません。シェルビルトインである必要があります(そうでない場合、シェルの現在のディレクトリを変更できませんでした。これはプロセス自体が行う必要があります)。したがって、シェルと同じ言語で記述されます(これも多くの場合ですC
)。
その他の例:
あなたはこれらの多くをオンラインで見つけることができます。
Matの回答にもう少し追加するだけですが、Unixはこれらをスタンドアロンプログラムとして実装しますが、多くのコマンドも内部に実装されていますbash
(新しいプロセスを生成するために保存するため)詳細については、bash
マニュアルページを参照するか、シェルを確認してください-builtinタグ。
bash
Cでも書かれている
これらのコマンドがCで書かれている必要はないことは注目に値するかもしれません-実際、いくつかのミニLinuxディストリビューションlua
はこれらと他の実装を使用しています。
cd
、効果的に機能するために組み込みのシェルでなければならないことにも注意してください。