🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

Q&A

解決済

4回答

5348閲覧

シェル、コンソール、ターミナルの違いについて

duolingo

総合スコア2

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

2グッド

2クリップ

投稿2021/02/22 14:09

編集2021/02/22 14:16

ターミナル、シェル、コンソールの違いについて調べると、概念的な説明はあるのですが、具体的にどういったものなのか、具体例をあげているものがあまりなく、よくわかっておらず、整理のために質問させていただきます。

ターミナル:端末。具体的には、キーボードやディスプレイが付いた(何らかの操作が可能な)パソコン本体。
シェル:カーネルとユーザーの間を取り持つインターフェイス。コマンドプロンプト, Power Shellなど。
コンソール: シェルと似ているが、パソコンの操作が目的ではなく、プログラム言語を書いて実行するのに使うもの。Google Developer toolsのconsoleはこれにあたる。

という理解をしているのですが、合っているでしょうか?
ご回答よろしくお願いします。

追記:
このサイトによると、コマンドプロンプトやPower Shellはどちらかというと「コマンドライン」というものにカテゴライズされるようですが、ということは「シェル」というのはこれらとは独立して存在して、ユーザーがシェルにアクセスするのにもう一段階「コマンドライン」というクッションを挟んでいるというイメージでしょうか? ユーザーがシェルを直接操作するということはできないのでしょうか?

退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/02/22 14:28

何のために、それらを峻別しなくてはならなくなったのでしょうか?
guest

回答4

0

本来は意味が違うものでしたが、ハードウェア等の変化により、混同して使われるようになっています。
ネットにあふれている「本来の意味からすると間違った使い方の資料」を読むときには、duolingoさんが正しい意味を理解したとしてもあまり役に立ちません。なぜなら、書いている人が理解していないからです。

とはいうものの、一応の意味です。

コンソールとターミナルはどちらも入出力機器です。システムの中央に一個だけあるものがコンソール、システムの周辺にたくさんあるものがターミナルです。もともとはハードウェアでしたが、今ではハードウェアをエミュレートしたソフトウェアであることも多いです。それが混乱の原因の一つです。

  • コンソール(console)

制御卓 consolidate(整理統合する)から派生したことば

  • ターミナル(terminal)

端、終点 ターミナル駅とかターミネーター(命を終わらせるもの)とかと同語源

シェルとカーネルはソフトウェアです。ハードウェアに近いところにあって本質的な仕事をしているのがカーネルで、ユーザに近いところにあってユーザの入力をカーネルに伝えたり、カーネルの出力をユーザに伝えたりするものがシェルです。

  • シェル(shell)

殻 シェル石油の看板はホタテ貝の殻 そのようなものです。

  • カーネル(kernel)

核 アーモンドとかクルミの種の部分

コンソールやターミナルの画面で、文字で行うものをCUI、画像で行うものをGUIといいます。CUIのうち、最下行にしか新しい文字を表示できず、下から上に流れて消えていくものをコマンドラインといいます。コマンドライン端末のことをテレタイプ端末(TTY)ということもありますが、これも本来の意味からすると誤用です。

コンソールという入出力機器に対して、普通はCUI(つまり文字ベース)のシェルが動いています。
ターミナルという入出力機器に対しても、普通はCUI(つまり文字ベース)のシェルが動いています。

シェルとカーネルの関係について、用法が間違っているのではないかとのご指摘がありました。
詳しく説明するのは大変ですし、絵をかかないとわかりにくいので、絵入りのサイトを紹介しておきます。

シェルの概念と機能

投稿2021/02/22 15:26

編集2021/02/23 02:34
ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

angel_p_57

2021/02/23 00:31

> ユーザに近いところにあってユーザの入力をカーネルに伝えたり、カーネルの出力をユーザに伝えたりするものがシェル そういう説明する人よくいますけど、実態として全然違いますよね。「書いている人が理解していない」と言っておきながら自身でやらかすのはどうかと思います。 カーネルと対になってるのはユーザ(空間)で、「割り当てられた資源の中でアプリが好き勝手(単純にはメモリ上のデータの加工)できる部分」であって、シェルではないです。 シェルは、コンピュータシステムを操作するためのUIとして位置づけられるアプリであって、システムとして一番大事なことは、まず間違いなく「目的に合ったアプリを動かすこと」なので、アプリの起動・制御を司るというのが一番の特徴でしょう。 ※コマンドに応じてアプリを実行する、とか、アイコンダブルクリックでアプリを起動する、とか。GUI系だとちょっとしたファイル操作や設定情報管理なんかも守備範囲として重要ですが。
pepperleaf

2021/02/23 01:25 編集

確かに、シェルとカーネルの対比はちょっと違うような。 こちらは、今のPC見るだけでは無理で、テレタイプの時代にさかのぼる必要があると思います。その時代の用語と、今の使い方が混じってるのではないでしょうか。 あと、CUI(Character User Interface), GUI(Graphical User I..)ですね。コンソール/ターミナル時代には、GUIなんて無かったので、CUIという言葉も後から、付けられたと思います。 それらが混同している、という指摘に対しては同意です。 (という事で +も -もしてませんが)
ppaul

2021/02/23 01:27

angel_p_57さんへの回答です。 ユーザ空間と対になっているのはカーネルではなくカーネル空間です。 1950年代にオペレーティングシステムはメモリを仮想化して多重仮想メモリによる複数プログラム並行実行機能を実現しました。そのようなOSでは、個々のプログラムが動作する仮想空間は、プログラム個別の領域とプログラムが共通に使う共通領域に分かれていました。 そのような環境の中で開発されたUNIは、それまでOSの中で混然一体となっていた中核機能(メモリ管理機能、ファイル管理機能、プログラム切り替え機能など)とOSに対して指示を与えるコマンドの機能とを分離するために提案したモデルがカーネル-シェルモデルです。 UNIXは、プロセス(プログラム)間で共通に利用される共通領域のことをカーネル空間と呼ぶことにし、これは現在のLinuxにも受け継がれています。 したがって、シェルと対になったカーネルという概念(モデル)が先にあり、UNIX系のOSでは、カーネルが動作する仮想空間の一部をカーネル空間と呼ぶようになったというのが正確です。
pepperleaf

2021/02/23 06:25

ppaulさん、 シェルとカーネルの対比が不適切と考えると言うだけです。 また、指摘のページには、シェルの記述は無いようですね。(見落としなければ) カーネル-シェルモデルと言う言葉も初めて聞きました。まとまった説明があれば、助かります。
ppaul

2021/02/23 08:20

コメントのページではduolingoさんにはわかりにくいかと思い、昼頃に回答の方に参照ページを載せましたのでご覧ください。 カーネル-シェルモデルは昔の私の近辺の方言かもしれません。内容としては、処理部分とインタフェース部分を分離しようという思想のことです。最近の方にとっては当たり前すぎてかえって理解できないのでしょう。昔のIBM360系のOSでは(今でもそうらしいですが)batch環境ではJCL(Job Control Language)、TSS環境ではCLIST言語というものがあってそれ以外の方法ではOSに処理を依頼することができませんでした。つまり、OSとしての機能とそれを操作する手段が緊密につながっていて別の選択肢がありませんでした。当時はそれが普通だったのです。 Unixの設計者は、人間がOSに処理を依頼するときのソフトウェアはOS機能の一部ではなく、他の多くのプログラムと同様に特権命令を直接には使わないソフトウェアとするように設計しました。このため、UNIXでは、OSの本体(これをkernelと呼びます)とは別に人間の指示をkernelに伝えるソフトウェア(これをshellと呼びます)を誰でも作れるようになりました。最初に提供sれたのはsh(つまりBorne Shell)ですが、他の開発者が作ったcsh(cshell)やzsh(Z Shell)などが作られ、多くのlinuxではbash(Borne-Again Shell)が提供されています。これを昔カーネル-シェルモデルと呼んでいました。最近の方にとっては当たり前すぎて理解できないと書いたのはこのあたりのことです。 私の方からも質問です。 「シェルとカーネルの対比が不適切と考える」の意味が良くわかりませんので、もう少し説明をいただければと思います。
angel_p_57

2021/02/23 11:37

> ppaulさん 別に「カーネル-シェルモデル」というのがあるのは別に構いませんが、「実態として全然違いますよね」の指摘に対する回答になってないでしょう。歴史の話がしたいのか、現在の用語が持つ意味の話がしたいのか、そこをはっきりさせてください。
pepperleaf

2021/02/23 11:41

ppaulさん、"シェルの概念と機能" 見てみました。 多分、違う。 シェルはユーザーとカーネルの間に入るものですが、カーネルを包むものでは無いです。一般的なアプリは、シェルを介さずに、カーネルアクセスします。GUIなら、シェルスクリプトでも動かさない限り、シェルは関与しません。シェルはコンソールで動作するアプリの一つに過ぎません。(だから、入れ替え可能だし、種類もある) ただ、一般的にはOSの一部とされます。 おっと、うっかり、シェルはカーネルアクセスすると書きましたが、カーネルは、OSのコア的部分なので、そこも正確じゃないですが。 なお、最近の人にとっては、Unix(Linux)と異なるWindows(DOS)環境の方がメジャーなので、もっと紛らわしいでしょう。
ppaul

2021/02/23 15:57 編集

angel_p_57さん 「実態として全然違いますよね」に対する回答は、「ユーザ空間と対になっているのはカーネルではなくカーネル空間です。」です。 私の文の中のカーネルはカーネル空間ではないと説明したつもりです。定義が違うのであればあなたと私のの間でコミュニケーションが成立しないのは仕方がないですね。
ppaul

2021/02/23 16:06

pepperleafさん ごめんなさい。どこに納得できないのかが読み取れませんでした。 アプリがシェルを介してカーネルにアクセスするとは書いていないと思います。
angel_p_57

2021/02/24 03:55

> 「実態として全然違いますよね」に対する回答は、「ユーザ空間と対になっているのはカーネルではなくカーネル空間です。」です。 もとの指摘は「そのppaulさんの言うシェルのモデルが、今一般的に言われているシェルの実態に合ってないですよね」ですよね。敢えて丁寧に言えば。回答のポイントがズレています。 > コミュニケーションが成立しないのは仕方がないですね。 はい。ですので、つけたマイナス評価はそのままで妥当かと思っています。
pepperleaf

2021/02/24 11:56

ppaulさん、 > アプリがシェルを介してカーネルにアクセスするとは書いていない ですが、参照している絵は、シェルがカーネルを囲んでいます。この絵を見る限り、カーネルアクセスはシェルが介在するように見えます。
guest

0

  • シェル:コマンドを実行するためのプログラム。普通、テキストでコマンドを入力するが、マウス等で操作するグラフィックシェルと自称するものもある。
  • ターミナル:もともとは、テキスト入出力を行うためのもの。通常、その機能を持つハードウエアを指す。用途によっては、出力しかできないものもある。何かのアプリケーションが常に実行されていて、コマンドが入力できない構成もありうる。最近は、グラフィックを備えたものが多く、常にATMなどのアプリケーションが実行されているものも多い。1台の計算機に大量のターミナルが接続されている、ネットワーク越しに不特定のターミナルが接続されるケースも多い。
  • コンソール:ターミナルの中で、特に計算機に直接つながっているハードウエア。物理的な画面が想起されることが多い。普通は、計算機1台にコンソール1台と想定されている。計算機の電源遮断、ハードの異常などの管理を行うために準備されされていることが多い。ターミナルで動作する大部分のアプリケーションは、コンソールでも動作する。逆に実行環境を調べ、コンソール以外では実行を拒否するプログラムは存在する。
  • 仮想環境の上で仮想環境の利用者が、仮想計算機の実行制御を行うためのアプリ等をコンソールと呼ぶこともある。仮想環境の例えばAWS全体から見れば、それもターミナルに過ぎず、仮想環境利用者の使用する仮想ターミナルの上で実行される直接AWS全体の制御コマンドを入力できない利用者仮想間環境調整用アプリに過ぎない。

投稿2021/03/02 00:01

gm300

総合スコア580

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

「ローカルのOSに対してコマンドを打ち込む」ものについては、ターミナル、シェル、コンソールどれで呼んでも構いませんが、そうでないものについては、特定の呼び方をされることがあります。

  • リモートOSに接続してコマンドを打ち込む画面…ターミナル、コンソール
  • ブラウザに対してコマンドを打ち込むもの…コンソール
  • ユーザーに対してGUIを表示するもの…GUIシェル

投稿2021/02/22 14:32

maisumakun

総合スコア145975

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/02/22 14:34

> ユーザーがシェルを直接操作するということはできないのでしょうか? いえ、ユーザーが操作できるものがシェルです。
maisumakun

2021/02/22 14:35

> コマンドプロンプトやPower Shellはどちらかというと「コマンドライン」というものにカテゴライズされるようですが、 コマンドラインインタフェースを提供するシェル、です。どちらかにしかならないものではありません。
duolingo

2021/02/22 14:42 編集

ご解説ありがとうございます。 峻別しなくてはいけない理由、といいますか、コマンド入力が必要な場面において、それを行うために使われるツールに対してこれらの3つのワードが使われていて、これらが同じものなのか、そうでないのか、それ自体が分からず質問した次第です。 まだ頭を整理しきれていないですが、「概念としては別々だが場面によっては同じものを指すこともあり、使い分けることもある」ということで理解しようと思います。
maisumakun

2021/02/22 14:44

> 「概念としては別々だが場面によっては同じものを指すこともあり、使い分けることもある」 語源までたどれば意味ははっきりしますが、そこまで厳密に考える実益はないです(たとえば、ブラウザコンソールがなぜ「コマンドライン」と呼ばれないのかは、語源に照らしても判断がつかないです)。
duolingo

2021/02/22 14:45

>コマンドラインインタフェースを提供するシェル、です。どちらかにしかならないものではありません。 よくわかりました。
guest

0

どれも違いはありません。
というか、どういう違いがあると思ってるんでしょうか

投稿2021/02/22 14:13

y_waiwai

総合スコア88038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

duolingo

2021/02/22 14:21 編集

これらのワードが別々の概念として扱われている記述を目にすることが多いため、「どういう違いがあるのか」と思い質問した次第です。 例えば、 https://teratail.com/questions/34043?link=qa_related_pc_sidebar http://tooljp.com/windows/chigai/html/OS/shell-console-Terminal-commandline-chigai.html#:~:text=%E3%82%B7%E3%82%A7%E3%83%AB%E3%81%A8%E3%81%AFOS%E3%82%92%E6%93%8D%E4%BD%9C%E3%81%99%E3%82%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AE%E3%81%93%E3%81%A8%E3%80%82&text=%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%81%A8%E3%81%AF%EF%BC%88%E3%81%9D%E3%81%AE%E6%A9%9F%E5%99%A8,%E8%A3%85%E7%BD%AE%E3%81%82%E3%82%8B%E3%81%84%E3%81%AF%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AE%E3%81%93%E3%81%A8%E3%80%82 https://eng-entrance.com/linux-basic-shell-terminal-console などで解説されていますが、いまいちイメージがはっきりしないのです。 (調べたところ、コマンドプロンプトがすなわち「シェル」、というわけではないようです。)
y_waiwai

2021/02/22 23:18

コマンドプロンプトのシェルはcmdですね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問