In computing, a shell is a user interface for access to an operating system's services. In general, operating system shells use either a command-line interface (CLI) or graphical user interface (GUI), depending on a computer's role and particular operation. It is named a shell because it is a layer around the operating system kernel..
The design of a shell is guided by cognitive ergonomics and the goal is to achieve the best workflow possible for the intended tasks; the design can be constricted by the available computing power (for example, of the CPU) or the available amount of graphics memory. The design of a shell is also dictated by the employed computer periphery, such as computer keyboard, pointing device (a mouse with one button, or one with five buttons, or a 3D mouse) or touchscreen, which is the direct human–machine interface.
CLI shells allow some operations to be performed faster, especially when a proper GUI has not been or cannot be created; however, they require the user to be familiar with commands and their calling syntax, and to understand concepts about the shell-specific scripting language (for example bash script), which may prove difficult for those with little computer experience. CLIs are also easier to be operated via refreshable braille display and provide certain advantages to screen readers.
Graphical shells place a low burden on beginning computer users, and they are characterized as being simple and easy to use. With the widespread adoption of programs with GUIs, the use of graphical shells has gained greater adoption. Since graphical shells come with certain disadvantages, most GUI-enabled operating systems also provide additional CLI shells.