シェルとは、コマンドインタープリタのことであり、ユーザーの入力操作を解釈して、システムの根本部分であるカーネルとの橋渡しを行うプログラムのことである。
シェルは、ユーザーがログインしている間はずっと起動しているプログラムであり、ユーザーは、自分の好みのシェルを使うことができる。代表的なシェルには、csh、bash、kshなどがある。
シェルは対話的な機能だけでなく、スクリプトファイルによる簡易的なプログラム言語の機能も備えている。
ちなみに、シェルの由来は、木の実や卵の内部をシステムに見立てた場合、外部から見える殻(shell)に相当することから来ていると言われている。
(shell から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2026/02/18 21:08 UTC 版)
|
|
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 (2023年11月)
|
シェル(英語: shell)とは、主にUnix系オペレーティングシステム(OS)で発展した、OSと利用者との間に位置するプログラムであり、利用者の入力を解釈してOSの機能を呼び出す役割を担う。
1970年代のUNIXにおいて確立され、コマンド入力による対話的操作およびスクリプトによる処理自動化を可能にする。通常はカーネルとは独立して動作し、ファイル操作やプログラム実行などの処理を仲介する。転じて、特定の機能を包み込み外部との接点を提供するソフトウェアを指して「シェル」と呼ぶ場合もある。
コマンドラインシェルとグラフィカルシェルの2種類の形態へ大別される:
CLIとGUIのどちらが優れているかという議論はしばしば行われている。CLI支持派は、特定の操作(ファイル群の移動など)を行う際にGUIよりもCLIの方が速いと主張する。また、CLIには複数のコマンドを組み合わせて素早く高度な処理を行えるとの主張もある。一方GUI支持派は、グラフィカルシェルの方がユーザビリティが高くシンプルだと主張する。しかし、用途により適するものは異なる。たとえばサーバ管理はリモートのことも多く、VNCなどでGUI画面を転送してネットワーク帯域を浪費することは好ましくなかったり、そもそもセキュリティポリシー的にそのような接続は禁止されることもある。一方で、たとえば画像や映像などのデータの開発や編集にはGUIの方が適している。少なくとも、多くのCLIにはソフトウェアの連携においてGUIを圧倒する柔軟性を持つパイプライン機能が備わっており、慣れれば短時間で既存のソフトウェアを繋ぎ合わせて高度な処理を記述できる事と、OSがクラッシュして最小構成でしか起動できなくなった場合にはCLIしか利用できない事から、システム開発・運用・管理の現場ではCLIスキルは重要視されている。
Multics以前のOSでは、シェル的なユーザインタフェースの機能はOS本体と渾然一体なものとして考えられ、そのように実装されていた(今日でも簡易なモニタ的なものではそういった設計も多い)。Multicsはシェルをモジュール化して独立させる設計を示した。UNIXもその影響をうけて設計され、シェルは単なる1ユーザプロセスとして動作するもので、利用者の好みにより選択もできる(また内部実装の話としては、端末デバイス等が、そのようにしてシェルを独立したプロセスとして実装できるように機能が設計されている)。DOSでも、あまり一般的ではないが、COMMAND.COM以外の、フリーソフトによるシェルなどもある。なお、DOSの起動時の設定ファイルであるCONFIG.SYSにおいて「SHELL=C:\COMMAND.COM」といったようにして設定されるファイルは、その設定項目名の通りシェルであることが多いが、ブートの最後に、最初のプロセスとして実行するプログラムを指定するものであって、例えばアニメなどの架空のOSの起動画面を再現するプログラムなど、シェルでないものを指定することもある。
(エキスパートシステムにおいては、特定用途の知識ベースを入れる前の「空の」エキスパートシステムをシェルと呼ぶ[1])
シェル自身が持つ機能に関係しており、シェル単体で処理が完結するコマンドが内部コマンドである。それに対し、他のプログラムにより実行されるコマンドが外部コマンドである。OSの外殻としてのシェルでは普通、外部コマンドを実行する機能は必須である。また、システムに異常がある場合、外部コマンドがほとんどあるいは全く使えなくなることもあるため、そういった場合に対処できるよう、外部コマンドで実装できるものでも内部コマンドが用意されることもある(Windowsのシェルは、DOS時代にフロッピィディスクでの運用では外部コマンドが全く無いこともあったCOMMAND.COMの影響で、多数の機能を抱えており、一見では似ているUnix系のシステムに移行したユーザは、DIRコマンドに相当するlsコマンドなどすら外部コマンドであることに、しばしば戸惑う)。
以下の機能のそれぞれを持つものもあれば、持たないものもある。
多くのコマンドラインシェルが、対話的に利用するだけでなく、テキストファイルないしパイプからのテキストをコマンドとみなして処理できる。これにより、ある種のプログラミング言語のインタプリタのように利用できる。そのようなシェルスクリプトで利用する場合に便利な多くの機能は、対話的にも利用できることが多い(たとえばBourne Shellではそうなっている)。いっぽうでC Shellのように、設計時に対話的利用に重点が置かれすぎたため、シェルスクリプト・プログラミングが推奨されないとされているシェルもある(Csh Programming Considered Harmful[5])。逆にスクリプト言語としての設計が重視されたMicrosoft PowerShellのような例もある。あるいは、プログラミング言語のインタプリタとして、Lispなどの処理系でREPLと呼ばれるものもシェルに近い。
なお、Unixのシェルには「インタラクティブシェル」と「ログインシェル」という概念がある。インタラクティブモードは専ら対話的な利用のためのモード、非インタラクティブモードは専らシェルスクリプト実行のためのモードで、一般にそのシェル自身の入出力が端末か否かなどにより変化するが、利用できるコマンド等がこれらで変化するわけではない。/bin/shに-iというオプションを付けると強制的にインタラクティブモードで起動されるが、主な違いは一部のシグナルを無視するようになること[6]、というようなシステム的な違いである。
一方ログインシェルとは、端末などにおいてログインした直後などの、最初のプロセスとしてのシェルのことである。通常の利用法ではログインシェルはインタラクティブシェルだが、そうでないこともある。たとえばsshのコマンドライン引数で指定されたコマンドを実行しているだけの、リモートマシンにおけるシェルはログインシェルだがインタラクティブではない。
具体例としてbashの場合、インタラクティブシェルでは起動時に~/.bashrcを読み込み、ログインシェルでは起動時に~/.bash_profileを読み込む。
歴史上有名なものやよく使われているUnixシェルとして、以下のものがある。
上述の一覧の一部は、DOSやWindowsでも利用可能であり、Unixとの相互運用性を様々なレベルで可能にする。主な例として、MKS Toolkit(sh、bash、ksh、csh、tclsh、rshを利用可能)、UnxUtils、UWIN、Cygwin、DJGPP、Interixなどがある。Windows Services For UnixはほとんどのバージョンでKornShellとC Shellを提供しており、Perlもコマンドラインとして利用できる。
UnixシェルはOS/2やOpenVMSといった他のOSでの利用可能である。また、VMSのシェルであるDCLもDOS、Windows、OS/2、Unix系OSで利用可能となっている。
DOSやWindows NTのシェルもUnix系システムで利用可能となっているバージョンがある。
プログラミング言語処理系に対するコマンドラインインタプリタも、一種のシェルである。OS的な機能へのインタフェースを持つものもある。
\relaxという命令を実行することでコマンドラインインタプリタとして利用できるようになる。グラフィカルシェルは、グラフィカルユーザインタフェース(GUI)によるand・or デスクトップ環境などといったGUI環境へのユーザインタフェースとしてのシェルである。コマンドラインシェルと違い、形態がそれほど明確には固まっていない。
たとえば、X Window Systemなどのグラフィックシステムなどを含んだかなり広い範囲を含んで捉えられることもあれば、GNOMEデスクトップ環境のGNOME Shellのように、その提供するUIのほとんどの機能は他のプログラムを通じて提供される本当にごく薄い「シェル」に徹しているものもある。また、X Window Systemの環境ではウィンドウマネージャをデスクトップ環境も兼ねたシェルとして使うこともあったり(Xウィンドウマネージャ)、Windows 3.x時代のプログラムマネージャや、Mac OSにおけるFinderのように、ランチャーやファイルマネージャがベースのグラフィカルシェルもある(Windows shell(en:Windows shell)も、プログラム自体はExplorerである)。
Mac OSでは、System Software(あるいは単に"System")と呼ばれていたClassic Mac OS時代の、68k Macintosh用のバージョン1から、2017年現在の現行版であるmacOSのバージョン10.13(High Sierra)に至るまで一貫して、Finderがグラフィカルシェルである。
現代のMicrosoft WindowsのシェルはWindows shellである。ファイルマネージャとしてのWindows Explorerの他、デスクトップ環境(スタートメニュー、タスクバー等)を含めた全体を指してWindows shellという用語が使われている。古いバージョン(Windows 3.x、NT 3.x)ではプログラムマネージャ(progman.exe)がデフォルトのシェルであり、デフォルトでなくなった後もしばらくは残っていてシェルを切り替えることもできた。
iTVmediaPlayerなどのデスクトップアプリケーションも、サードパーティのエンジンを使っているという意味でシェルと呼ばれることがある。同様にWindows Explorerのインタフェースに不満を持つ多くの個人や業者が機能や外観を変更するソフトウェアや代替のグラフィカルシェルを開発してきた。前者(外観改善)の好例としてWindowBlindsがある。後者(代替)の例としては、LiteStep、SharpE、Emerge Desktopなどがある。
相互運用プログラムや特定用途のソフトウェアにより、Windows上で後述のUnix系GUI環境を使用することもできる。また、Windows NTの一部バージョンにはOS/2サブシステムがあり、OS/2のプレゼンテーションマネージャと同等の環境を提供していた。
前述のようにグラフィカルシェルとして捉えられている範囲が一定していないため、ここではいくつかの類型に分類して示す。
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/03/26 13:55 UTC 版)
「HUMAN LOST 人間失格」の記事における「SHELL(シェル)」の解説
日本において4大医療革命を成し遂げた国民健康保障機関。Sound Health Everlasting Long Lifeの略。本部は環状7号線内部のインサイドにあり、金色のドームで包まれている。国民の健康状態の管理を行っているが、独自の軍事組織も有しており、ロスト現象の存在を隠蔽している。
※この「SHELL(シェル)」の解説は、「HUMAN LOST 人間失格」の解説の一部です。
「SHELL(シェル)」を含む「HUMAN LOST 人間失格」の記事については、「HUMAN LOST 人間失格」の概要を参照ください。