こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

間違えていたら、補足お願いします。

投稿日時 - 2008-04-01 13:54:44

QNo.3912822

すぐに回答ほしいです

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

色々。

例えば「echo」コマンド。これは「シェル組み込みコマンドのechoコマンド」と「/bin/echoのechoコマンド」の2つがある。

「シェル組み込みコマンド」は「シェル自身の中に処理ルーチンがある」ので「シェル組み込みコマンドのechoコマンド」は、シェル自身が実行している。

で「/bin/echoのechoコマンド」は「シェル組み込みコマンドにechoコマンドを持っていないシェル」を使用した場合に使用される。

>1、シェルのコマンドはシェルのフォルダにコンパイルされて保存されてるのでしょうか?

「シェルのフォルダ」など存在しない。シェルのコマンドは、すべて、シェル自身の実行ファイルの中で処理される。

>2、ユーザが打ったコマンドをシェルが解釈するときそのフォルダを検索して目当てのコマンドのプログラム実行してるのでしょうか?

「シェルのフォルダ」など存在しないから「フォルダを検索」などしない。

「内部コマンドのコマンド名は、予め決められていて、シェル自身の実行ファイル内部に埋め込まれている」だけ。

ユーザーが打ち込んだコマンドラインの先頭の語句が、それらと一致したら、そのコマンドラインは、シェル自身の実行ファイルの中で処理される。



なお、シェル自身が実行しない「外部コマンド」については「探すフォルダの場所と順番をシェルに指示しておく」事により、順に検索される。

なので、当然「シェルが検索しない場所に置かれた外部コマンドはシェルから呼び出せない」事になる。

投稿日時 - 2008-04-01 14:23:34

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

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

投稿日時 - 2008-04-02 08:28:30

ANo.2

シェルのコマンドを、内部コマンドと外部コマンドに分けた場合、
質問者様の意図は、内部コマンドということで考えて見ます。

内部コマンドとは、シェルに内臓されているコマンドということで、シェルを実行するときに同時にメモリに読み込まれるわけです。

したがって「コマンドをシェルが解釈するとき」最初はメモリから探されて見つかったら実行されます。

外部コマンドのように何処にあるか探すために、絶対パスやPATH変数は必要としません。

投稿日時 - 2008-04-01 14:10:50

ANo.1

シェルって、/bin/sh、/bin/bashとかの類ですよね?

シェルから実行できるコマンドには、内部コマンドと外部コマンドがあります。内部コマンドは、シェル組み込みのコマンドですので、シェルと一緒にコンパイルされて、シェルのバイナリの中にあって、シェルと不可分です。

外部コマンドは、環境変数PATHに指定された「:」(コロン)区切りで並べられたディレクトリ(フォルダ)下のファイルが検索されて実行されるものです。

投稿日時 - 2008-04-01 14:09:57

お礼

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

投稿日時 - 2008-04-02 06:26:19

あなたにオススメの質問