GNU/Bash 系列(一)什么是 Shell?

什么是 Shell ?

参考维基百科:https://en.wikipedia.org/wiki/Shell_(computing)

In computing, a shell is a computer program which exposes an operating system‘s services to a human user or other programs. 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 the outermost layer around the operating system.

What's a shell

  • 一个命令行解释器,用于将用户输入的命令转换为系统操作;
  • Shell 既是交互式命令语言(CMD),也是脚本编程语言(Script);
  • Shell 有很多内置在其源代码中的命令。这些命令是内置的,所以 Shell 不必到磁盘上搜索它们,执行速度因此加快。不同的 Shell 内置命令有所不同;

有哪些 Shell ?

GUI (Graphical User Interface)

  • GNOME
  • KDE
  • ……

CLI (Command Line Interface)

  • Bourne Shell (sh)
  • Bourne Again Shell (Bash)
  • C Shell (csh)
    • 即 csh,1978年由 Bill Joy 在伯克利大学毕业后编写;
    • Bill Joy,Sun 联合创始人,vi 作者,BSD 作者;
    • csh 更加注重交互式使用而非脚本应用,引入了历史功能、别名、目录栈、作业控制等功能;
  • TENEX C Shell (tcsh)
  • Korn Shell (ksh)
  • Z Shell (Zsh)
  • ……

sh

https://en.wikipedia.org/wiki/Bourne_shell

  • 即 sh,是影响最广的 shell 。 1977 年由 Stephen Bourne 在贝尔实验室编写。虽无明文规定,但已成为事实上的标准;
  • 引入了 shell 通用的、基础的功能,例如管道、变量、条件判断、循环等;
  • 全部类 Unix 系统,都至少有一个与 sh 兼容的shell;
  • sh 一般位于 /bin/sh。目前大部分系统,/bin/sh 都是一个链接,指向一个兼容 sh 的、功能更丰富的 shell,如 bash;

Bash

https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html

https://en.wikipedia.org/wiki/Bash_(Unix_shell)

Bash is a Unix shell and command language written by Brian Fox for the GNU Project as a free software replacement for the Bourne shell.

First released in 1989, it has been used as the default login shell for most Linux distributions.

  • 即 bash,1989年由 Brian Fox 为 GNU 项目编写。
  • 综合了 sh、csh、ksh 等各种 shell 的特性;
  • 名字有双关含义,既是字面上的意思,用于替换 sh,也隐含为了 GNU 而 born again 的意思;
  • 是 Mac OS X 和大部分 Linux 发行版的默认 shell;

Bash 脚本教程 - 阮一峰

Zsh

https://www.zsh.org/

https://ohmyz.sh/

https://en.wikipedia.org/wiki/Z_shell

The Z shell (Zsh) is a Unix shell that can be used as an interactive login shell and as a command interpreter for shell scripting.

Zsh is an extended Bourne shell with many improvements, including some features of Bash, ksh, and tcsh.

GUI 和 CLI 如何切换?

切换到 tty1 ~ tty6 终端:Ctrl + Alt + [F1 ~ F6]

切换到 GUI:Ctrl + Alt + [F7]

参考

https://en.wikipedia.org/wiki/Shell_(computing)