• ベストアンサー
  • 暇なときにでも

Linuxのシェル(sh,bash等)について

Linux上でコマンドを実行するとき、その窓口となるものが、シェル(sh,bash)という認識です。 つまり、 (1)CUI環境でLinuxを操作する上で、シェル以外でコマンドを実行する事はありうるのか? (2)Windowsのコマンドプロンプトも一種のシェルと言えるか 以上、2点についてお教え頂きたいです。 宜しくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数358
  • ありがとう数4

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

  • ベストアンサー
  • 回答No.2

1. >そうなるとコマンドじゃなくてシグナルとかになるのではないでしょうか。 そういうのは世間一般ではシステムコールと言います。 で、C言語などでプログラムを組めばシステムコールを送ることは簡単にできます。 2. 正解。 WindowsにおいてCUIのシェルはコマンドプロンプト(cmd.exe) またMS-DOS時代の名残としてのDOSプロンプト(COMMAND.COM)も残されています。 最近ではそのコマンドプロンプトの代わりにWindows PowerShellを用意しています。 で、GUIでのシェルはエクスプローラ(explorer.exe)となります。 >windowsにはカーネルって表現がいまいちしっくりこないのであまり合わないと思います。 Windowsにも普通にカーネルは存在しますしカーネルという表現を利用します。 (プログラムの実行としてカーネルモードとユーザモードもあるしカーネルと言う物もあります。)

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答ありがとうございます。 >そうなるとコマンドじゃなくてシグナルとかになるのではないでしょうか。 そういうのは世間一般ではシステムコールと言います。 で、C言語などでプログラムを組めばシステムコールを送ることは簡単にできます。 なるほど。つまり、プログラムを使用して、間接的にカーネルに働きかけることが 可能という事ですね。 しかし、そのプログラムを実行するためには、シェルを利用する必要があるのですね。 >GUIでのシェルはエクスプローラ(explorer.exe)となります。 すごく納得がいきました。つまり、カーネルのコマンドを対話的に操作するものは、 「シェル」という事なんですね。

関連するQ&A

  • シェルとは

    シェルとはCUIで操作するためのプログラムですか? コマンドプロンプトはシェルの機能の一つなのでしょうか? 2点よろしくお願いします。

  • 【Linux】シェルの実行方法を教えて下さい。

    【Linux】シェルの実行方法を教えて下さい。 ファイルの中身が#!/bin/bashで始まる拡張子shのシェルがあります。 これを実行するには、どのようなコマンドを打てばよいのでしょうか? 1.rootでログイン。 2.test.shがあるフォルダに、cdで移動する。 3.test.shと入力し、Enterキーを押す。 ↑みたいな感じで良いのでしょうか。 テスト用サーバなので、最悪壊しても良いと上司に言われましたが、 なにぶん時間がないため質問させていただきました。 Redhatでバージョンが3か4だったと思います。 よろしくお願いします。

  • なぜLinuxでKornシェルが使えるのでしょうか?

    Linux初心者です。 シェルについてわからないことがあり、質問させていただきます。 Linux(Red Hatを使っています)の /bin/shと/bin/cshは、それぞれ/bin/bash、/bin/tcshのシンボリックリンクファイル、 なのに対して、なぜkshだけは/bin/kshそのままなのでしょうか? また、KornシェルはAT&T社が開発したものだそうですが、 これはLinuxで使う際にライセンスの問題に触れないのでしょうか? よろしくお願いいたします。

その他の回答 (3)

  • 回答No.4
  • notnot
  • ベストアンサー率47% (4584/9616)

>(1)CUI環境でLinuxを操作する上で、シェル以外でコマンドを実行する事はありうるのか? 対話的にコマンドを実行するプログラムのことをシェルと言います。従って、sh bash tcsh 等以外でも、そう言う機能を持ったプログラムがあれば、それはシェルの一種です。 対話的でなければ、プログラムの中から他のプログラム(コマンド)を実行するようにプログラミングすることは可能で、実際そうされています。 >(2)Windowsのコマンドプロンプトも一種のシェルと言えるか はい。 また、GUIのシェルという概念もあり、WindowsだとExplorer、LinuxだとKDEやGNOME等のウィンドウマネージャ(デスクトップ環境とも言う)がそれに当たります。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答ありがとうございます。 >対話的でなければ、プログラムの中から他のプログラム(コマンド)を実行するようにプログラミングすることは可能で、実際そうされています。 なるほど。対話的というのは、言い換えれば、「端末操作する人間が意図的に」プログラムを 実行する、ということですよね。 つまり、「意図的に」なにかしらのプログラムを実行する場合は、すべてシェルを通して PCに干渉する必要がある、ということなんですね。

  • 回答No.3
  • 486HA
  • ベストアンサー率45% (1012/2245)

:>(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環境に特化して進化してきたという背景があるからなんでしょうね。

  • 回答No.1
  • k_kota
  • ベストアンサー率19% (434/2186)

(1)シェルを経由しない操作はあるでしょうけど、そうなるとコマンドじゃなくてシグナルとかになるのではないでしょうか。 多分カーネルにコマンドは投入できないし、投入してるものは通常はコマンドとは読んでないはず。 (2)言えないことはないけど、コマンドプロンプトと言ったほうがややこしいことが少ないと思います。 厳密に言えばカーネルあってのシェルです、windowsにはカーネルって表現がいまいちしっくりこないのであまり合わないと思います。 ちなみに、カーネルとかシェルというのはunix系一般の話というのが面倒が少ない認識の仕方だと思います。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

お早い回答ありがとうございます。 >windowsにはカーネルって表現がいまいちしっくりこないのであまり合わないと思います。 たしかに、Windowsでは、いまいちカーネルの存在を意識することは普段無いように 感じます。

関連するQ&A

  • LinuxでKornシェルが使えるのは何故でしょうか。

    Linux初心者です。 シェルについてわからないことがあり、質問させていただきます。 Linux(Red Hatを使っています)の /bin/shと/bin/cshは、それぞれ/bin/bash、/bin/tcshのシンボリックリンクファイル、 なのに対して、なぜkshだけは/bin/kshそのままなのでしょうか? また、KornシェルはAT&T社が開発したものだそうですが、 これはLinuxで使う際にライセンスの問題に触れないのでしょうか? よろしくお願いいたします。

  • [シェルスクリプト内で bashコマンド後のコマンドが実行されない]

    [シェルスクリプト内で bashコマンド後のコマンドが実行されない] 以下の様にシェルスクリプトを記述するとコマンド2が実行されません。 #! /bin/sh コマンド1 bash コマンド2 bash環境でコマンド2を実行させるにはどうしたら良いのでしょうか?

  • シェルスクリプト bashのtestコマンドが動きません

    こんにちは、ど素人なのにシェルスクリプト仕事で書かされ苦しんでます。 SUN-solaris8で動作したシェルをLinuxE3.0へ移動させたら testコマンドでエラーになりました。 SUN-solaris8ではbsh LinuxE3.0ではbashです。 test -s file名は両方で認識するようですが、 test -s ../directory名/file名で指定して 実行するとSUNでは動作したのですが Linuxではわけの分からないメッセージが出て終了。 Linuxで % sh と打つと/bin/bash % test と打つと /XXX/usr/binだったかな?パス忘れました。 % man bashでマニュアル見るとtestは[]で囲め?   英語だから良く分からなかった。   疲れたので今日は諦めました。 testコマンドで良い解決法ご教示願います。 情報が不足なら指摘いただいた物を追加いたします。

  • shはシェルなのかコマンドなのか?

    http://d.hatena.ne.jp/KishikawaKatsumi/20080504/1209922424 で $ sudo sh j2sdk-1_4_2_13-linux-i586-rpm.bin $ sudo rpm -ivh j2sdk-1_4_2_13-linux-i586.rpm と、shと打ち込むと最後の.binが消えますが、shは シェルなのか、それともコマンドなのかどちらなの でしょうか? 手元にあるlinuxの入門書には「shはシェルの一種である」 と記述があります。googleで検索をしてみましたが、 コマンドであるような記述もあり、混乱しております。 また、その入門書には「シェルを切り替えるには、コマンドライン でシェルの名前を入力します。exitコマンドで、元のシェル に戻ります」とあり、その文章の下には実際にshと打ち込んでexit で元に戻る様が書いてあるので実際に試してみました。 [root@localhost ~]# sh sh-3.2# exit exit [root@localhost ~]# この記述のせいでますますわからなくなりました。 なお、最後のbinがシェルスクリプトであることは理解して おります。 ご存じの方、ご教授頂ければ幸いです。何卒宜しくお願い申し 上げます。

  • windowsとLinux、どちらのコマンドから学習するのが良いでしょ

    windowsとLinux、どちらのコマンドから学習するのが良いでしょうか? 突然ですが、cuiに親しんでいこうと思うようになりました(cuiを習得すべき生活上の必要性が生じた訳ではありません)。 私は、Linuxを操作したことはなく、windows一本でguiにどっぷり使ってPCライフを過ごしてきました。現OSはWin7(64bit)です。 そこでお伺いしたいのですが、windowsとLinuxのどちらのコマンドから学習するのが良いでしょうか? 今回の質問では、「長い目で見れば」どちらの方が深い理解に到達しやすいかを重視しています。私自身は、Linuxのコマンド学習に傾いています。理由は、(1)LinuxにはLPIC等の検定試験もあり、体系だった学習がしやすいのではないか?、(2)windows powershellはLinuxに歩み寄った部分もあるようなので、windowsのコマンド習得は、Linuxでのコマンド学習から類推して進められる部分も多いのではないか?、という2点です。 以上のようなことを考えていますが、いかんせん私自身cuiには全く疎いので、実際にcuiに親しんでいる方からの意見をぜひ参考にさせていただきたいと思っています。本当にお手数ですが、ご回答よろしくお願いします。

  • redhatで使用するシェルを作りたいです。

    redhatで使用するシェルを作りたいです。 linuxはほとんど触ったことがなく、そもそもの理解が間違っているかもしれません。 ご容赦ください。 サーバOSがredhat5.4?でとりあえずシャットダウン処理を走らせる、簡単なコマンドでできないかと思っています。 Windowsだとbatファイルにshutdownコマンドを記入して実行すればシャットダウンされますが、linuxの場合はshファイルにどのようなコマンドを記入してどう実行すればよいのかわかりません。 Windowsとは勝手が違うのでしょうか? インターネットで調べてみましたが入門編のようなサイトが見当たらず、このように投稿した次第です。 よろしければコマンドの書き方と実行方法を教えていただけると助かります。 よろしくお願いします。

  • シェルとカーネルについて。

    UNIX等ではシェルとカーネルの概念は有名ですが、Windowsにもシェルとカーネルの概念があると聞きましたが、具体的にはどの機能(?)がシェルに当たるのでしょうか? UNIXとかならシェルはコマンドラインの命令をカーネルに伝える、というのでなんとなく分かるのですが、Windowsでは基本的にはGUIで操作するのでどこがシェルなのかな?と疑問に思います。 (コマンドプロンプトで実行する際はWindowsでのシェルの役割が何となく認識できますが) どなたか分かる方、ご意見・ご回答お願いします。 (乱文ですいません)

  • LinuxとGUI

    LinuxとGUIについてお聞きしたいことがあるのですが、 よろしくお願いいたします。 自分は今までLinux=CUIという認識をしてまして、 Linuxはインストールして起動したら、コマンドプロンプトの画面だけがずっと表示されているものなのだと思ってました。 実際、Windowsにcolinuxをインストールした時は、コマンドプロンプトしか表示されなかったので、そういうものなのだと思ってました。 しかし、最近VMware PlayerにUbuntuをインストールしてみて、LinuxディストリビューションでもWindowsのようにアイコンなどのGUIを表示できるものがあるのだと初めて知りました。 そこで疑問なのですが、例えばEclipseは、Linux上で利用出来、また、wxWidgetsを利用してGUI部分の構築も出来るらしいですが、EclipseとwxWidgetsを使ってCUIしかなさそうなLinuxディストリビューション上でソフトウェア開発をする場合、CUIしかないLinuxディストリビューション上でGUI付きのソフトを開発できるものなのでしょうか?Eclipse+wxWidgetsを起動したら、コマンドプロンプトからIDEのGUI画面に移るのでしょうか? CUIオンリーのLinuxでGUI使いまくりのウェブブラウザなどを起動したらどうなるのかも疑問です。 そもそも「CUIしかない」とか「CUIオンリー」とかの認識が間違ってるのかもしれませんが、どなたかご教授いただけると幸いです。 よろしくお願いいたします。

  • bash --login -i ??

    windows の cygwin でセットアップされる cygwin.bat を見ると、 bash --login -i と書いてあります。 --login 、-i とは何だろう、と思って man bash とすると、 --login はログインシェル -i はインタラクティブモード となっています。 (1) ログインシェルとはなんでしょう? 気づいたこととしては、コマンドプロンプトから bash と入力するだけのときと、--login をつけたときでは、プロンプトがちがうようです。(.bashrcを読み込まない?) (2) インタラクティブモードとはなんでしょう。 -i をつけたときとつけなかったときで、特に目に見えた違いはわからなかったのですが。。

  • PERLとシェルについて

    コマンドプロンプトで入力されたPERLコマンドはシェルのプログラムによってカーネルに引き渡されてカーネルがPERLのプログラムにそのコマンドを実行させて、その結果をカーネル→シェルへと引き渡されてコマンドプロンプトに表示されるのでしょうか?