terminal: 提供一个命令的输入输出环境
普通 Linux 来说,终端的作用是一个字符(或者模拟字符)的命令交互界面,实现对计算机的控制。(动态交互以及静态交互)
shell: 命令行解释器 / linux 内核的一个外壳
负责**外界与 linux 内核的交互
- shell 接收命令, 然后将这些命令转化成内核能理解的语言并传给内核, 内核执行命令完成后将结果返回给用户或者应用程序。
- 当打开一个 terminal 时,操作系统会将 terminal 和 shell 关联起来,当在 terminal 中输入命令后,shell 就负责解释命令。
bourne shell: 早期 shell
AT&T UNIX 第七版(1979 年)中引入的,并成为早期 UNIX 系统的标准 shell。提供如下特性:
- 基本功能
- 命令行解释,执行命令;
- 脚本编写,统一执行;
- 脚本语言支持
- 条件 (if、case)
- 循环 (for、while、until)
- 变量和简单的数据处理
- 输入/输出重定向和管道操作
- 轻量高效
- 简洁,对资源有限的设备友好
bash / bourne again shell: 增强的 shell
Bourne shell 的扩展,增加和增强了很多特性:
- 交互性
- 命令历史记录
- 方向键 (
↑
和↓
) 或 history
- 方向键 (
- 命令补全
- 通过
Tab
键
- 通过
- 命令历史记录
- 脚本语言
- 数组支持
- 增强的变量操作:变量的默认值设置、替换和字符串操作
test
条件测试select
/C-style
for 循环控制- 函数局部变量(
local
)
- 语法特性
- 命令替换增强:
$(command)
比旧的反引号语法更简洁、易读且嵌套友好 - 进程替换:
<(...
和>(...)
处理命令的输入/输出 - 数学运算:
((...))
和$((...))
支持整数运算。
- 命令替换增强:
- 内置功能
- 内置命令
- declare
- typeset
- let
- enable
- 作业控制:
- 后台运行 (&)
- 暂停 (Ctrl+Z)
- 前后台切换 (fg 和 bg)
- 内置帮助
- help 命令
- 内置命令
- 可移植性和灵活性
- 跨平台支持:
unix
/linux
- 配置灵活性:
/etc/profile
和~/.bashrc
- 跨平台支持:
- 脚本调试
bash -x script.sh
- 扩展的兼容性
- 向下兼容 Bourne Shell 的语法,同时也吸收了其他 shell 的特性:
- 从 C Shell (csh) 借鉴了命令历史功能。
- 从 Korn Shell (ksh) 借鉴了数组和更强的变量操作。
- 向下兼容 Bourne Shell 的语法,同时也吸收了其他 shell 的特性: