

現在、Linuxの勉強をしておりまして、その中で、「シェル」、「ターミナル」、「コマンドプロンプト」という言葉が出てきました。検索して調べてみたのですが、いまいち違いがよく分かりません。

Linuxの勉強を初めて初心者のため、「シェル」、「ターミナル」、「コマンドプロンプト」の違いを教えて頂きたいです。宜しくお願い致します。


CC BY-SA 3.0
2016-05-04T05:10:02.040
24549
2016-10-19T18:19:44.787
2016-10-19T18:19:44.787
754
12323
question
linux unix 専門用語 端末
シェル、ターミナル、コマンドプロンプトの違いを教えてください


**シェル**

ユーザからのコマンド入力を受け取りコマンドを実行するためのプログラムです。  
LinuxにCUIの画面では「コマンドプロンプト」が表示されますが、それを表示しているのがシェルです。

また、コマンド入力をテキストファイルに保存することで、保存された一連の操作を実行させることもできます。テキストに書かれたコマンド群を「シェルスクリプト」と呼びます。

シェルスクリプトはデーモンプロセスの起動や停止などでも使われてますし独自のシェルスクリプトを作成して 新しいコマンドとして使用するのもよくある使い方です。

bash, tsch, ksh, zsh など色んな種類のシェルがあります。

**ターミナル**

日本語だと端末といいます。古くはUNIXと接続する端末装置が由来ですが現在ではそれは仮想化されたソフトウェアになっていて仮想ターミナル（仮想端末）などと呼ばれています。gnone-
terminal, rxvt, kterm, xterm などいろんな仮想ターミナルがあります。

**コマンドプロンプト**

前述のシェルが表示するコマンド入力用のプロンプトを「コマンドプロンプト」といいます。また、Windows用の仮想ターミナルは「コマンドプロンプト」という名前がついてます。この場合はLinuxにはありません。


CC BY-SA 3.0
2016-05-04T10:35:02.527
24555
2016-05-09T05:36:14.497
2016-05-09T05:36:14.497
5008
5008
24549
answer


有識者を自称出来る自信はありませんが、回答を差し上げたく思います。  
以下は独自研究を多大に含んでおり、  
この回答に対し、｢役に立つ｣評価を下すのはお勧めしません。

まず結論を申し上げますと、  
**｢いずれもほとんどの場合は同じ概念で使われている。カーネル(OSの基幹部分。根。核)に  
特定の処理をお願いする時に使用する、ソフトウェアを指す意味で｣**  
と私は認識しております。

※Itecの｢コンピュータシステムの基礎｣第15版で  
Unixを説明する項にシェルが出てきました。それによると  
**｢利用者からのコマンドを受け付けたり、使いやすい環境を提供する  
ユーザインタフェ－ス｣**  
だそうです。これと同様の意味でターミナルを説明された経験があるので、  
やはりというか、違いは無いのかもしれません。  
(なおターミナルとコマンドプロンプトを説明した項はありませんでした)

というわけで、  
｢ああ、あの黒い画面、ギークが使ってそうなやつね｣  
と思っていただければ、学習においては問題無いと思います。  
ちなみにコマンドには方言というものがあり、環境によってコマンドが異なったり、  
存在しなかったりします。  
学習の際にはどの環境を対象にしたドキュメントであるかにご注意ください。

Exa 1. ｢ちゃんとネットワーク繋がっとる？ちょっとICMP飛ばして｣ ⇒Linux、Windows共に｢ping｣  
Exa 2. ｢IPAddress調べたいんだけど｣ ⇒Linuxは｢ifconfig｣、Windowsは｢ipconfig｣  
Exa 3.「むかつく。ハックしてやる」 ⇒Linuxは｢ssh｣、Windowsは｢telnet｣

以下個人の主観です。

シェル：  
Linux文化圏において使われる言い回し。  
エクスプロイドで遊んでる人が別の意味でも使うのでたまに混乱する。

ターミナル：  
サーバー屋さん、汎用機関係者が用いられる。  
つまりLinux文化圏でよく見られる言い回し。

コマンドプロンプト：  
Windows文化圏で使われる言い回し。cmd.exe。  
Windows環境ではLinuxと比較して使用可能な機能(コマンド)が限られる為か、  
｢は？Whoisできないの？は？｣等々文句が聞こえてきます。※個人の主観です。  
が、これには後継が存在するのでOSが7以降であれば、そちらの使用を検討しましょう。

以下蛇足です。

Windows Power Shell：  
Windows文化圏でいうコマンドプロンプトの後継となるシェルソフト。  
オブジェクトが扱える。その為コマンドプロンプトでは出来ない、  
｢IP Addressがxxx.xxx.xxx.xxxの、○○番のポート開いてますかー？｣という確認も出来る。

※オブジェクトと言われてもよくわからないと思いますが、  
Windowsには便利関数をたくさん集めた.Netフレームワークなる便利な工具箱があって、  
このソフトは工具箱から色々引き出して使うことが出来ると思ってください。

なおMSのBuild 2016での発表によると、  
Windows10でBash(Unixシェル)を使えるようにするとのこと。  
異文化圏の方とコミュニケーションを取る場合、今後は  
(シェル？ああ、コマンドプロンプトね)  
(コマンドプロンプト？ああ、シェルね)  
と確認せずに察して話を進めるとリスクがあると思います。


CC BY-SA 3.0
2016-05-04T11:35:14.630
24557
2016-05-04T11:35:14.630
14618
24549
answer


**ターミナル** （gnome-terminal等）が **シェル** （bash等）を呼び出して **コマンドプロンプト**
（PS1等）が表示され、そこにユーザーがコマンドを入力できる、という関係です


CC BY-SA 3.0
2016-05-04T12:47:14.470
24562
2016-05-04T12:47:14.470
4010
24549
answer


# Shell; シェル

入力を得てプロセスを立ち上げる役目を担います。入力はスクリプトファイルだったり、 **ターミナル** だったりします。

# Terminal; ターミナル、端末

現在ではモニタやキーボードなどがのパソコンに直結された構成が一般的ですが、UNIXが登場した時代にはそのような装置は存在せず、端末をシリアル接続していました。[VT100](https://ja.wikipedia.org/wiki/VT100)なんかが有名です。  
このような端末を利用するプログラムが数多くあるため、現在では、既にあるモニタ、キーボードを利用して端末をエミューレートして使います。このため端末エミュレータ・仮想ターミナルなどとも呼ばれます。

# コマンドプロンプト

Windowsのコマンドプロンプトを想像してしまいますが、UNIXにおいては **シェル** が **ターミナル**
上で入力を受け付けている行およびその表示を指します。


CC BY-SA 3.0
2016-05-04T22:21:30.907
24573
2016-05-04T22:21:30.907
4236
24549
answer