terminal: 提供一个命令的输入输出环境

普通 Linux 来说,终端的作用是一个字符(或者模拟字符)的命令交互界面,实现对计算机的控制。(动态交互以及静态交互)

shell: 命令行解释器 / linux 内核的一个外壳

负责**外界与 linux 内核的交互

  • shell 接收命令, 然后将这些命令转化成内核能理解的语言并传给内核, 内核执行命令完成后将结果返回给用户或者应用程序。
  • 当打开一个 terminal 时,操作系统会将 terminal 和 shell 关联起来,当在 terminal 中输入命令后,shell 就负责解释命令。

bourne shell: 早期 shell

AT&T UNIX 第七版(1979 年)中引入的,并成为早期 UNIX 系统的标准 shell。提供如下特性:

  1. 基本功能
    1. 命令行解释,执行命令;
    2. 脚本编写,统一执行;
  2. 脚本语言支持
    1. 条件 (if、case)
    2. 循环 (for、while、until)
    3. 变量和简单的数据处理
    4. 输入/输出重定向和管道操作
  3. 轻量高效
    1. 简洁,对资源有限的设备友好

bash / bourne again shell: 增强的 shell

Bourne shell 的扩展,增加和增强了很多特性:

  1. 交互性
    1. 命令历史记录
      1. 方向键 () 或 history
    2. 命令补全
      1. 通过 Tab
  2. 脚本语言
    1. 数组支持
    2. 增强的变量操作:变量的默认值设置、替换和字符串操作
    3. test 条件测试
    4. select / C-style for 循环控制
    5. 函数局部变量(local
  3. 语法特性
    1. 命令替换增强: $(command) 比旧的反引号语法更简洁、易读且嵌套友好
    2. 进程替换: <(...>(...) 处理命令的输入/输出
    3. 数学运算: ((...))$((...)) 支持整数运算。
  4. 内置功能
    1. 内置命令
      1. declare
      2. typeset
      3. let
      4. enable
    2. 作业控制:
      1. 后台运行 (&)
      2. 暂停 (Ctrl+Z)
      3. 前后台切换 (fg 和 bg)
    3. 内置帮助
      1. help 命令
  5. 可移植性和灵活性
    1. 跨平台支持: unix / linux
    2. 配置灵活性:/etc/profile~/.bashrc
  6. 脚本调试
    1. bash -x script.sh
  7. 扩展的兼容性
    1. 向下兼容 Bourne Shell 的语法,同时也吸收了其他 shell 的特性:
      1. 从 C Shell (csh) 借鉴了命令历史功能。
      2. 从 Korn Shell (ksh) 借鉴了数组和更强的变量操作。