殼層（英語：Shell）在電腦科學中指「為使用者提供使用者介面」的軟體，通常指的是命令列介面的解析器。一般來說，這個詞是指作業系統中提供存取核心所提供之服務的程式。Shell 也用於泛指所有為使用者提供操作介面的程式，也就是程式和使用者互動的層面。因此與之相對的是核心（英語：Kernel），核心不提供和使用者的互動功能。

不過這個詞也拿來指應用軟體，或是任何在特定元件外圍的軟體，例如瀏覽器或電子郵件軟體是 HTML 排版引擎的 Shell。Shell 這個詞是來自於作業系統（核心）與使用者介面的外層介面。

通常將 shell 分為兩類：命令列與圖形介面。命令列殼層提供一個命令列介面（CLI）；而圖形殼層提供一個圖形使用者介面（GUI）。



歷史

殼層（shell）這個說法起源於路易斯・普贊（Louis Pouzin），在 1964 年至 1965 年間首次提出，隨後在 Multics（MULTiplexed Information and Computing System）計畫中首次被實作出來。

Unix 上的第一個 Unix 殼層（Unix shell）是肯・湯普遜（Ken Thompson）以 Multics 上的 shell 為範本，所寫出的 Thompson shell。

微軟的 Windows 作業系統也提供了命令列殼層的功能，它們是 Windows 95 / 98 下的 command.com、Windows NT 核心下的 cmd.exe 以及 PowerShell；而圖形介面殼層即為 explorer.exe。



殼層列表

圖形化使用者介面（GUI）殼層

GUI 通常會建構在視窗系統上。


* AmigaOS 環境：
  
* Workbench（從 AmigaOS 2.0 之後增加了 GUI 殼）
  
* Ambient（MorphOS）
  
* Directory Opus
  
* ScalOS
  
* Wanderer（AROS.）

* DOS Shell

* Macintosh Finder

* Microsoft Windows 環境：
  
* Aston shell
  
* BB4Win
  
* Emerge Desktop
  
* Geoshell
  
* Litestep
  
* 程式管理器
  
* Secure Desktop
  
* SharpE
  
* Windows Explorer
  
* UserShell

* X Window System 環境或 Wayland 環境（主要用於類 Unix 作業系統）：
  
* 獨立的 X 視窗管理員，例如 Blackbox 與 Fluxbox
  
* 依靠視窗管理員的完整桌面環境，例如：
    
* CDE
    
* GNOME
    
* Unity（以 GNOME 作核心）
    
* KDE
    
* XFCE

命令列介面（CLI）殼層

Unix 或類似作業系統下的殼層

常見或歷史上知名的 Unix 殼層有：


* Bourne shell（sh） /\*'man sh' （頁面存檔備份，存於網際網路檔案館）\*/
  
* Almquist shell（ash） /\*'man ash' （頁面存檔備份，存於網際網路檔案館）\*/
    
* Debian Almquist shell（dash） /\*'man dash' （頁面存檔備份，存於網際網路檔案館）\*/
  
* Bourne-Again shell（bash） /\*'man bash' （頁面存檔備份，存於網際網路檔案館）\*/
  
* Korn shell（ksh） /\*'man ksh' （頁面存檔備份，存於網際網路檔案館）\*/
  
* Z shell（zsh） /\*'man zsh' （頁面存檔備份，存於網際網路檔案館）\*/

* C shell（csh） /\*'man csh' （頁面存檔備份，存於網際網路檔案館）\*/
  
* TENEX C shell（tcsh） /\*'man tcsh' （頁面存檔備份，存於網際網路檔案館）\*/

* EMACS shell (eshell)

* Es shell（es）

* esh (Unix) – Easy Shell

* friendly interactive shell（fish） /\*'man fish' （頁面存檔備份，存於網際網路檔案館）\*/

* rc shell（rc）– shell for Plan 9 from Bell Labs and Unix

* scsh（Scheme Shell）

* Stand-alone Shell（sash）

* BeanShell（bsh （頁面存檔備份，存於網際網路檔案館），bsh.Interpreter , bsh.Console （頁面存檔備份，存於網際網路檔案館）） /\*'man bsh'\*/

* Rhino JavaScript 殼層 （頁面存檔備份，存於網際網路檔案館）（org.mozilla.javascript.tools.shell.Main （頁面存檔備份，存於網際網路檔案館）） /\*'man rhino'\*/

以及 linux 系統上的：'/etc/shells' （頁面存檔備份，存於網際網路檔案館）

非 Unix 作業系統的殼層


* 4DOS, 4OS2, 4NT – JP Software 公司可在在 DOS, OS/2，及 Windows NT 下使用的殼層。Take Command 程式則是 GUI 方式的相容程式。

* Amiga CLI/Amiga 殼層是稱為 Workbench 的 AmigaOS 圖形介面的另一選擇。

* BASIC-PLUS – RSTS/E

* Beemos（BEEMos）–在 Windows XP 上執行的一個小型專案，提供設定、應用程式等功能，感覺起來像是在另一個作業系統下。

* CANDE MCS– MCP 作業系統的指令行殼曾與文字編輯器

* CCP – CP/M 作業系統的主控台指令處理器

* cmd.exe –基於 OS/2、Windows CE、Windows NT 系列作業系統的命令提示字元殼層

* COMMAND.COM – DOS 的殼層

* Commodore DOS Wedge – Commodore 64 上 BASIC 2.0 的延伸功能，包括常用磁碟操作的簡略指令

* DCL – OpenVMS 的標準殼層，衍生自早期的迪吉多（DEC）作業系統

* DDT – 迪吉多（DEC）PDP-10 偵錯工具，麻省理工學院 Incompatible Timesharing System 的指令殼層

* DROS – 智慧型手機上基於 Java ME 平台的類 DOS 殼層

* EFI-SHELL –可擴展韌體介面（Extensible Firmware Interface，EFI）指令殼層，它是開放原始碼的

* Google Shell –基於瀏覽器的 Google Search 前端介面

* iSeries QSHELL – IBM OS/400 上的 Unix 風格殼層

* Macintosh Programmer's Workshop –古典 Mac OS 軟體開發用的老式指令行環境

* Microsoft BASIC –一些古老 8 位元電腦上的主要作業環境

* Rexx – IBM 的手稿語言（scripting language）

* Singularity shell – Singularity 的標準殼層

* Windows PowerShell –命令提示字元的新一代物件導向後繼者（舊稱 Monad 或 Microsoft Shell (MSH)）

* Windows 修復主控台– Windows 2000、Windows XP、Windows 2003 作業系統的一項功能

* YouShell –用於 YouOS，基於 JavaScript 的指令處理器



參考文獻



外部連結


* 命令殼層概觀，Microsoft Technet （頁面存檔備份，存於網際網路檔案館）

* The Unix Shell: Introduction



參見


* 電腦殼的比較

* 殼帳號（Shell Account）

* 殼指令碼（Shell Script）

* 批次檔

* Unix shell

* DOS 殼

* Internet Explorer 殼