シェル(コンピューティング)

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ
1980年代後半のグラフィカルインターフェイス。manページ用のTUIウィンドウ、整形されたウィンドウ(時)、およびいくつかのアイコン化されたウィンドウを備えています。右下には、 Unixシェルを実行しているターミナルエミュレータが表示されています。ユーザーは、ターミナルに座っているかのようにコマンドを入力できます

コンピューティングでは、シェルはオペレーティングシステムのサービスを人間のユーザーまたは他のプログラムに公開するコンピュータプログラムです。一般に、オペレーティングシステムのシェルは、コンピューターの役割と特定の操作に応じて、コマンドラインインターフェイス(CLI)またはグラフィカルユーザーインターフェイス(GUI)のいずれかを使用します。これは、オペレーティングシステムの最外層であるため、シェルと呼ばれます。[1] [2]

コマンドラインシェルでは、ユーザーがコマンドとその呼び出し構文に精通し、シェル固有のスクリプト言語(bashなど)に関する概念を理解している必要があります。

グラフィカルシェルは、初心者のコンピュータユーザーに負担をかけず、使いやすいという特徴があります。また、特定の欠点もあるため、ほとんどのGUI対応オペレーティングシステムはCLIシェルも提供します。

概要

オペレーティングシステムは、ファイル管理プロセス管理(アプリケーションの実行と終了)、バッチ処理、オペレーティングシステムの監視と構成など 、さまざまなサービスをユーザーに提供します。

ほとんどのオペレーティングシステムシェルは、シェルがコンピューターに直接接続された周辺機器を介してユーザーと通信する場合でも、基盤となるカーネルへの直接インターフェイスではありません。シェルは実際には、他のアプリケーションプログラムで使用されるのとまったく同じ方法でカーネルAPIを使用する特別なアプリケーションです。シェルは、ユーザーに入力を求め、入力を解釈し、基盤となるオペレーティングシステムからの出力を処理することでユーザーとシステムの相互作用を管理します(read-eval-printループ、REPLのように)。[3] オペレーティングシステムシェルは実際にはアプリケーションであるため、ほとんどのオペレーティングシステムでは、別の同様のアプリケーションに簡単に置き換えることができます。

ローカルシステムで実行されているシェルに加えて、リモートシステムをローカルユーザーが利用できるようにするさまざまな方法があります。このようなアプローチは通常、リモートアクセスまたはリモート管理と呼ばれます。当初はマルチユーザー メインフレームで利用可能で、シリアル回線またはモデムを介してメインフレームに接続されたテキスト端末を使用してアクティブユーザーごとにテキストベースのUIを同時に提供していましたが、リモートアクセスはUnixライクなシステムやMicrosoftWindowsにまで拡張されました。Unixライクなシステムでは、通常、Secure Shellプロトコルがテキストベースのシェルに使用されますが、SSHトンネリングはX Window Systemベースのグラフィカルユーザーインターフェイス(GUI)に使用できます。Microsoft Windowsでは、リモートデスクトッププロトコルを使用してGUIリモートアクセスを提供できます。WindowsVista以降、PowerShell Remoteは、WMI、RPC、およびWS-Managementを介したテキストベースのリモートアクセスに使用できます。[4]

ほとんどのオペレーティングシステムシェルは、コマンドラインとグラフィカルの2つのカテゴリのいずれかに分類されます。コマンドラインシェルはオペレーティングシステムにコマンドラインインターフェイス(CLI)を提供し、グラフィカルシェルはグラフィカルユーザーインターフェイス(GUI)を提供します。他の可能性としては、それほど一般的ではありませんが、音声ユーザーインターフェイスや、CLIではないテキストベースのユーザーインターフェイス(TUI)のさまざまな実装があります。CLIベースおよびGUIベースのシェルの相対的なメリットについては、しばしば議論されます。

コマンドラインシェル

コマンドプロンプト、WindowsのCLIシェル
広く採用されているUnixシェルであるBash

コマンドラインインターフェイス(CLI)は、キーボードで入力された英数字を使用して、オペレーティングシステムに命令とデータをインタラクティブに提供するオペレーティングシステムシェルです。たとえば、テレタイプライターは、キーストロークを表すコードをコンピューターで実行されているコマンドインタープリタープログラムに送信できます。コマンドインタプリタは、キーストロークのシーケンスを解析し、文字のシーケンスを認識できない場合はエラーメッセージで応答します。または、アプリケーションプログラムのロード、ファイルの一覧表示、ユーザーのログインなど、他のプログラムアクションを実行する場合があります。UNIXなどのオペレーティングシステムには、さまざまなコマンド、構文、機能を備えた多種多様なシェルプログラムがあります。ベースラインであるPOSIXシェル一部のオペレーティングシステムには、単一のスタイルのコマンドインターフェイスしかありませんでした。MS-DOSなどの汎用オペレーティングシステムには標準のコマンドインターフェイス(COMMAND.COM)が付属していましたが、メニューやリモートプログラム実行などの追加機能を提供するサードパーティ製のインターフェイスも利用できることがよくありました。

アプリケーションプログラムは、コマンドラインインターフェイスを実装する場合もあります。たとえば、Unixライクなシステムでは、telnetプログラムには、リモートコンピュータシステムへのリンクを制御するためのいくつかのコマンドがあります。プログラムへのコマンドは、リモートコンピュータに送信されるデータと同じキーストロークで作成されるため、2つを区別するための何らかの手段が必要です。エスケープシーケンスは、渡されることはないが常にローカルシステムによって解釈される特別なローカルキーストロークを使用して定義できます。プログラムはモーダルになり、キーボードからのコマンドの解釈を切り替えるか、処理するデータとしてキーストロークを渡します。

多くのコマンドラインシェルの機能は、コマンドのシーケンスを保存して再利用できることです。データファイルには、ユーザーが入力したかのようにCLIに実行させることができる一連のコマンドを含めることができます。CLIの特別な機能は、これらの保存された命令を実行するときに適用される場合があります。そのようなバッチファイル(スクリプトファイル)を繰り返し使用して、システムの再起動時に一連のプログラムを初期化するなどの日常的な操作を自動化できます。シェルのバッチモードでの使用には、通常、構造、条件、変数、およびプログラミング言語の他の要素が含まれます。そのような目的に必要な最低限の要素を備えているものもあれば、それ自体が非常に洗練されたプログラミング言語であるものもあります。逆に、一部のプログラミング言語は、オペレーティングシステムシェルから、または専用プログラムでインタラクティブに使用できます。

コマンドラインシェルは、ユーザーが入力した数文字に基づいてインタープリターがコマンドを拡張するコマンドライン補完などの機能を提供する場合があります。コマンドラインインタープリターは履歴機能を提供する場合があります。これにより、ユーザーはシステムに発行された以前のコマンドを呼び出して、場合によっては編集を加えて繰り返すことができます。オペレーティングシステムへのすべてのコマンドはユーザーが入力する必要があるため、プログラムオプションを表すための短いコマンド名とコンパクトなシステムが一般的でした。短い名前はユーザーが思い出すのが難しい場合があり、初期のシステムには詳細なオンラインユーザー指示ガイドを提供するためのストレージリソースがありませんでした。

グラフィカルシェル

グラフィカルユーザーインターフェイス(GUI)は、ウィンドウの開閉、移動、サイズ変更などの操作を可能にし、ウィンドウ間でフォーカスを切り替えることにより、プログラムをグラフィカルに操作するための手段を提供します。グラフィカルシェルは、デスクトップ環境に含まれている場合もあれば、緩く結合されたユーティリティのセットとして個別に提供される場合もあります。

ほとんどのグラフィカルユーザーインターフェイスは、データファイルが机の上の紙の文書であるかのように表される 「電子デスクトップ」のメタファーを開発し、アプリケーションプログラムは、コマンド名によって呼び出される代わりに、同様にグラフィカル表現を持ちます。

Unixライクなシステム

KDEのKDesktopKonquerorの間でファイルのグループに対して実行されるドラッグアンドドロップ操作

グラフィカルシェルは通常、ウィンドウシステムの上に構築されますX Window SystemまたはWaylandの場合、シェルはそれぞれXウィンドウマネージャーまたはWaylandコンポジターで構成され、インストールされたアプリケーションを起動したり、開いているウィンドウや仮想デスクトップを管理したりする機能を提供する1つまたは複数のプログラムで構成されます。多くの場合、ウィジェットエンジンをサポートします。

macOSの場合Quartz Compositorはウィンドウシステムとして機能し、シェルはFinder[5] Dock[5] SystemUIServer、[5]およびMissionControlで構成されます。[6]

Microsoft Windows

最新バージョンのMicrosoftWindowsオペレーティングシステムは、Windowsシェルをシェルとして使用します。Windowsシェルは、デスクトップ環境スタートメニュータスクバー、およびオペレーティングシステムのファイル管理機能にアクセスするためグラフィカルユーザーインターフェイスを提供します。古いバージョンには、MicrosoftWindowsの3.xシリーズのシェルであるProgramManagerも含まれいます。これは、実際には、少なくともWindowsXPを介して95タイプとNTタイプの両方の新しいバージョンのWindowsに付属しています。Windowsバージョン1と2のインターフェイスは著しく異なっていました。

デスクトップアプリケーションも、サードパーティのエンジンを使用している限り、シェルと見なされます。同様に、Windowsエクスプローラーのインターフェイスに不満を持っている多くの個人や開発者は、シェルの機能と外観を変更するか、シェルを完全に置き換えるソフトウェアを開発しました。StarDockによるWindowBlindsは、前者の種類のアプリケーションの良い例です。LiteStepEmergeDesktopは、後者の良い例です。

相互運用性プログラムと目的に合わせて設計されたソフトウェアにより、Windowsユーザーは、Macintoshだけでなく、以下で説明するさまざまなUnixベースのGUIの多くに相当するものを使用できます。バージョン3.0のOS / 2 Presentation Managerに相当するものは、 WindowsNTのバージョンの OS / 2環境サブシステムを使用して、特定の条件下で一部のOS / 2プログラムを実行できます。

その他の用途

「シェル」は、自然界に見られるシェルと同様に、Webブラウザや電子メールクライアントなどの特定のコンポーネントを「中心に構築」されたアプリケーションソフトウェアを表すためにも大まかに使用されます。実際、(コマンドライン)シェルはオペレーティングシステムカーネルをカプセル化します。これらは「ラッパー」と呼ばれることもあります。[2]

エキスパートシステムでは、シェルは特定のアプリケーションの知識ベースを持たない「空の」エキスパートシステムであるソフトウェアの一部です。[7]

も参照してください

参考文献

  1. ^ 「インターネットの5番目の男」、ブレインスキャン、エコノミスト、ロンドン:エコノミストグループ、2013年12月13日、Pouzin氏は、ユーザーが面倒で反復的なコマンドを自動化するのに役立つRUNCOMというプログラムを作成しました。彼がコンピューターの回転する内部の「シェル」として説明したそのプログラムは、コマンドラインシェルと呼ばれるソフトウェアツールのクラス全体にインスピレーションと名前を与えました。
  2. ^ a b レイモンド、エリックS.(編)。「シェル」ジャーゴンファイル
  3. ^ 「オペレーティングシステムシェル」AIX6.1インフォメーション・センターIBMCorp _ 2012年9月16日取得
  4. ^ ウィーラー、ショーン(2018年10月14日)。「リモートコマンドの実行」MicrosoftDocsMicrosoft 2019年6月30日取得1つのPowerShellコマンドを使用して、1台または数百台のコンピューターでコマンドを実行できます。Windows PowerShellは、WMI、RPC、WS-Managementなどのさまざまなテクノロジを使用してリモートコンピューティングをサポートします。
  5. ^ a bc 「デーモンのライフサイクル」アップル社。
  6. ^ 「OSXLionでミッションコントロールを再開する」OSXDaily。2011年11月23日。
  7. ^ 英国コンピュータ協会:ICTおよびコンピューティング用語のBCS用語集ピアソン教育。2005.p。135. ISBN 978-0-13-147957-9