殼層

right
-{zh-hans:Shell;zh-hant:殼層}-（-{zh-hans:也稱為殼層;zh-hant: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
** Program Manager
** 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' date=20201112021330 */
** Almquist shell（ash） /* 'man ash' date=20210225025218 */
*** Debian Almquist shell（dash） /* 'man dash' date=20210224121139 */
** Bourne-Again shell（bash） /* 'man bash' date=20210413140510 */
** Korn shell（ksh） /* 'man ksh' date=20210227053922 */
** Z shell（zsh） /* 'man zsh' date=20210224043709 */- C shell（csh） /* 'man csh' date=20201013205438 */
** TENEX C shell（tcsh） /* 'man tcsh' date=20210105201527 */- EMACS shell (eshell)- Es shell（es）- esh (Unix) – Easy Shell- friendly interactive shell（fish） /* 'man fish' date=20210224092104 */- rc shell（rc）– shell for Plan 9 from Bell Labs and Unix- scsh（Scheme Shell）- Stand-alone Shell（sash）- BeanShell（ bsh date=20201210230349 ， bsh.Interpreter , bsh.Console date=20201210230355 ） /* 'man bsh'fix-attempted=yes */- Rhino  JavaScript殼層 date=20110103060950 （ org.mozilla.javascript.tools.shell.Main date=20120629082425 ） /* 'man rhino'*/
以及linux系統上的： '/etc/shells' date=20181210213739 

**非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 date=20101114074356 -  The Unix Shell: Introduction

**參見**
 電腦殼的比較- 外殼帳號（Shell Account）- 外殼腳本（Shell Script）- 批次檔- Unix shell- DOS殼- Internet Explorer殼