Linuxは、コマンドプロンプト(コマンドを入力してEnterキーを使用して)から呼び出すことができる有効なコマンドのリストをどこに保持しますか?
このリストは完全なリストですか、それともこのリストに含まれていない追加のエントリをコマンドプロンプトに入力する方法はありますか? (例:CTRL + C - コマンドプロンプトの終了など)
これら2つの質問に対する答えがわからない場合は、自由に答えてください。
Linuxでコマンドを入力した後、コマンドラインでEnterキーを押すと、ソースコードはどこから始まりますか?
コマンドプロンプトでコマンドを実行すると、Linuxのソースコードはどこから始まりますか?
セキュリティによっては、私の質問はユーザーごとに異なる可能性があるため、単純化のためにrootユーザーを使用します。
答え1
どこにも。
Linuxはカーネルで、カーネルだけです。すべてのコマンドは、シェル組み込み(各シェル文書にリストされています)、または通常および/bin
に/sbin
ある/
実行可能なバイナリです/usr
。/usr/local
シェル自体もこのディレクトリにあるバイナリファイルです。
Linuxディストリビューションに含まれるバイナリに制限はありません。特定のバイナリは標準ツール(echo
、ls
などgrep
)と見なされますが、開発者はそれを含める必要はありません。
最後の質問は言葉ではありません。ソースコードは、実行可能なバイナリを生成するために書くコードです。
答え2
Linuxは、コマンドプロンプトから呼び出すことができる有効なコマンドのリストをどこに保持しますか?
それは別ではありません。Linux続いて、それはあなたの特徴です。シェル、どちらにしても構いません!ただし、デフォルトでは、Linuxのすべてのシェルは環境変数のディレクトリでPATH
実行可能ファイルを探します。組み込みコマンドもあり、ほとんどの場合、関数とエイリアスを定義できます。これは、シェルが初期化するときに実行する操作のほとんどです。
したがって、シェルと設定方法によっては、ディレクトリリストのエントリで構成され、コマンドでプログラムされ、初期化時にロードされた拡張で構成された複数のリストになります。
このリストは完全なリストですか、それともこのリストに含まれていない追加のエントリをコマンドプロンプトに入力する方法はありますか?
あなたは完全なリストを要求しましたが、今それが完全であるかどうかを尋ねています。それは言葉ではありません。
Linuxでコマンドを入力した後、コマンドラインでEnterキーを押すと、ソースコードはどこから始まりますか?
繰り返しますが、これはLinuxではなく、実行中のシェルプログラムです。具体的には、メディアはEnter入力処理ライブラリを理解し、入力トークン化フェーズに渡し、入力トークン化解釈フェーズに渡し、変換/実行フェーズに渡します。
結局のところ、シェルは公式言語のソルバーなので、技術的に他のコンパイラと非常によく似ています。