- ベストアンサー
Linuxのシェル(sh,bash等)について
Linux上でコマンドを実行するとき、その窓口となるものが、シェル(sh,bash)という認識です。 つまり、 (1)CUI環境でLinuxを操作する上で、シェル以外でコマンドを実行する事はありうるのか? (2)Windowsのコマンドプロンプトも一種のシェルと言えるか 以上、2点についてお教え頂きたいです。 宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
1. >そうなるとコマンドじゃなくてシグナルとかになるのではないでしょうか。 そういうのは世間一般ではシステムコールと言います。 で、C言語などでプログラムを組めばシステムコールを送ることは簡単にできます。 2. 正解。 WindowsにおいてCUIのシェルはコマンドプロンプト(cmd.exe) またMS-DOS時代の名残としてのDOSプロンプト(COMMAND.COM)も残されています。 最近ではそのコマンドプロンプトの代わりにWindows PowerShellを用意しています。 で、GUIでのシェルはエクスプローラ(explorer.exe)となります。 >windowsにはカーネルって表現がいまいちしっくりこないのであまり合わないと思います。 Windowsにも普通にカーネルは存在しますしカーネルという表現を利用します。 (プログラムの実行としてカーネルモードとユーザモードもあるしカーネルと言う物もあります。)
その他の回答 (3)
- notnot
- ベストアンサー率47% (4900/10358)
>(1)CUI環境でLinuxを操作する上で、シェル以外でコマンドを実行する事はありうるのか? 対話的にコマンドを実行するプログラムのことをシェルと言います。従って、sh bash tcsh 等以外でも、そう言う機能を持ったプログラムがあれば、それはシェルの一種です。 対話的でなければ、プログラムの中から他のプログラム(コマンド)を実行するようにプログラミングすることは可能で、実際そうされています。 >(2)Windowsのコマンドプロンプトも一種のシェルと言えるか はい。 また、GUIのシェルという概念もあり、WindowsだとExplorer、LinuxだとKDEやGNOME等のウィンドウマネージャ(デスクトップ環境とも言う)がそれに当たります。
お礼
ご回答ありがとうございます。 >対話的でなければ、プログラムの中から他のプログラム(コマンド)を実行するようにプログラミングすることは可能で、実際そうされています。 なるほど。対話的というのは、言い換えれば、「端末操作する人間が意図的に」プログラムを 実行する、ということですよね。 つまり、「意図的に」なにかしらのプログラムを実行する場合は、すべてシェルを通して PCに干渉する必要がある、ということなんですね。
- 486HA
- ベストアンサー率45% (1013/2247)
:>(1)CUI環境でLinuxを操作する上で、シェル以外でコマンドを実行する事はありうるのか? 「Linuxコマンド集 INDEX」 http://itpro.nikkeibp.co.jp/article/COLUMN/20060224/230573/ 「シェルとコマンド実行」 http://lpi.or.jp/column/linux/linux9.shtml :>(2)Windowsのコマンドプロンプトも一種のシェルと言えるか コマンド・プロンプト(cmd.exe)は、Windowsのシェルですが、UNIXなどのシェルと比較すると貧弱なものです。 コマンド・プロンプトの機能を補うために、WSH(VBScriptおよびJScript)やWindows Services for UNIX、 あるいはWMI(Windows Management Instrumentation)などがあります。 最近は、「Windows PowerShell」のように[.NET Framework]をベースにしたWindows用のシェルもあります、
お礼
ご回答ありがとうございます。 >コマンド・プロンプト(cmd.exe)は、Windowsのシェルですが、UNIXなどのシェルと比較すると貧弱なものです。コマンド・プロンプト(cmd.exe)は、Windowsのシェルですが、UNIXなどのシェルと比較すると貧弱なものです。 なるほど。標準のコマンドプロンプトが貧弱な理由は、 WindowsがGUI環境に特化して進化してきたという背景があるからなんでしょうね。
- k_kota
- ベストアンサー率19% (434/2186)
(1)シェルを経由しない操作はあるでしょうけど、そうなるとコマンドじゃなくてシグナルとかになるのではないでしょうか。 多分カーネルにコマンドは投入できないし、投入してるものは通常はコマンドとは読んでないはず。 (2)言えないことはないけど、コマンドプロンプトと言ったほうがややこしいことが少ないと思います。 厳密に言えばカーネルあってのシェルです、windowsにはカーネルって表現がいまいちしっくりこないのであまり合わないと思います。 ちなみに、カーネルとかシェルというのはunix系一般の話というのが面倒が少ない認識の仕方だと思います。
お礼
お早い回答ありがとうございます。 >windowsにはカーネルって表現がいまいちしっくりこないのであまり合わないと思います。 たしかに、Windowsでは、いまいちカーネルの存在を意識することは普段無いように 感じます。
お礼
ご回答ありがとうございます。 >そうなるとコマンドじゃなくてシグナルとかになるのではないでしょうか。 そういうのは世間一般ではシステムコールと言います。 で、C言語などでプログラムを組めばシステムコールを送ることは簡単にできます。 なるほど。つまり、プログラムを使用して、間接的にカーネルに働きかけることが 可能という事ですね。 しかし、そのプログラムを実行するためには、シェルを利用する必要があるのですね。 >GUIでのシェルはエクスプローラ(explorer.exe)となります。 すごく納得がいきました。つまり、カーネルのコマンドを対話的に操作するものは、 「シェル」という事なんですね。