• ベストアンサー

シェルのコマンドの仕組み

シェルのコマンドの仕組みについて教えてください。 1、シェルのコマンドはシェルのフォルダにコンパイルされて保存されてるのでしょうか? 2、ユーザが打ったコマンドをシェルが解釈するときそのフォルダを検索して目当てのコマンドのプログラム実行してるのでしょうか? 間違えていたら、補足お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.3

色々。 例えば「echo」コマンド。これは「シェル組み込みコマンドのechoコマンド」と「/bin/echoのechoコマンド」の2つがある。 「シェル組み込みコマンド」は「シェル自身の中に処理ルーチンがある」ので「シェル組み込みコマンドのechoコマンド」は、シェル自身が実行している。 で「/bin/echoのechoコマンド」は「シェル組み込みコマンドにechoコマンドを持っていないシェル」を使用した場合に使用される。 >1、シェルのコマンドはシェルのフォルダにコンパイルされて保存されてるのでしょうか? 「シェルのフォルダ」など存在しない。シェルのコマンドは、すべて、シェル自身の実行ファイルの中で処理される。 >2、ユーザが打ったコマンドをシェルが解釈するときそのフォルダを検索して目当てのコマンドのプログラム実行してるのでしょうか? 「シェルのフォルダ」など存在しないから「フォルダを検索」などしない。 「内部コマンドのコマンド名は、予め決められていて、シェル自身の実行ファイル内部に埋め込まれている」だけ。 ユーザーが打ち込んだコマンドラインの先頭の語句が、それらと一致したら、そのコマンドラインは、シェル自身の実行ファイルの中で処理される。 なお、シェル自身が実行しない「外部コマンド」については「探すフォルダの場所と順番をシェルに指示しておく」事により、順に検索される。 なので、当然「シェルが検索しない場所に置かれた外部コマンドはシェルから呼び出せない」事になる。

その他の回答 (3)

  • ken-etsu
  • ベストアンサー率46% (55/119)
回答No.4

外部コマンドは普通、シェルとは別にコンパイルされたバイナリファイルです。 が、例外もあって、例えば、PerlやPHPで書かれたスクリプトもあれば、シェルスクリプトもあります。これらは当然、バイナリファイルでなくテキストファイルです。

  • auty
  • ベストアンサー率58% (284/486)
回答No.2

シェルのコマンドを、内部コマンドと外部コマンドに分けた場合、 質問者様の意図は、内部コマンドということで考えて見ます。 内部コマンドとは、シェルに内臓されているコマンドということで、シェルを実行するときに同時にメモリに読み込まれるわけです。 したがって「コマンドをシェルが解釈するとき」最初はメモリから探されて見つかったら実行されます。 外部コマンドのように何処にあるか探すために、絶対パスやPATH変数は必要としません。

  • ken-etsu
  • ベストアンサー率46% (55/119)
回答No.1

シェルって、/bin/sh、/bin/bashとかの類ですよね? シェルから実行できるコマンドには、内部コマンドと外部コマンドがあります。内部コマンドは、シェル組み込みのコマンドですので、シェルと一緒にコンパイルされて、シェルのバイナリの中にあって、シェルと不可分です。 外部コマンドは、環境変数PATHに指定された「:」(コロン)区切りで並べられたディレクトリ(フォルダ)下のファイルが検索されて実行されるものです。

hirohiro8888
質問者

お礼

回答ありがとうございます。 環境変数PATHに指定されたフォルダの中の外部コマンドもコンパイルされて入ってるのでしょうか?