命令行解释器(Command Line Interpreter)是一个程序,它的主要作用是接收用户输入的命令,并执行相应的操作。它充当了用户与操作系统内核之间的桥梁。
一、什么是 Shell?
Shell
是一个通用术语,指的是 命令行解释器。它是用户与操作系统交互的一种方式(除了图形界面外)。Shell 可以读取用户的命令,解析它们,并调用操作系统提供的功能来完成任务。
常见的 Shell 类型包括:
sh
:Bourne Shell,最早的 Unix Shell。bash
:Bourne-Again Shell,Linux 系统中最常用的 Shell,是 sh 的增强版。zsh
:Z Shell,功能更丰富的现代 Shell。fish
:Friendly Interactive Shell,强调用户体验和交互性。PowerShell
:Windows 和跨平台环境中使用的 Shell(语法不同,面向对象)。
二、bash 是什么?
bash
是 Bourne-Again Shell 的缩写,是 GNU 项目开发的一个自由软件,广泛用于 Linux 和 macOS(早期版本默认使用 bash)。
特点:
- 兼容传统的
sh
shell。 - 支持命令历史、自动补全、别名等功能。
- 脚本兼容性强,大多数 Linux 发行版默认使用 bash。
- 有丰富的脚本编程功能。
示例命令:
echo "Hello, world!"
ls -l
三、zsh 是什么?
zsh
是 Z Shell 的缩写,是一种功能更强大、可定制性更高的 Shell。近年来越来越受欢迎,macOS 从 Catalina 开始默认使用 zsh。
特点:
- 支持插件系统(如 oh-my-zsh),极大增强功能。
- 更强大的自动补全、拼写纠正、主题支持。
- 支持很多 bash 的特性,同时扩展了很多高级功能。
- 用户体验更好,适合终端重度用户。
示例命令:
echo "Hello from ZSH"
四、shell、bash、zsh 的关系图解
名称 | 含义 | 是否是 Shell | 备注 |
---|---|---|---|
Shell | 命令行解释器的统称 | ✅ 是 | 所有命令行解释器都叫 shell |
bash | Bourne-Again Shell | ✅ 是 | 默认的 Linux shell |
zsh | Z Shell | ✅ 是 | 功能丰富,现代流行的 shell |
sh | 最早的 Unix shell | ✅ 是 | 较老的标准 shell |
五、如何查看当前使用的 Shell?
在终端中运行以下命令可以查看当前默认的 shell:
echo $SHELL
也可以查看你当前正在使用的 shell:
ps -p $$ -o comm=
六、总结
对比项 | bash | zsh | 说明 |
---|---|---|---|
默认使用系统 | Linux、旧版 macOS | 新版 macOS(Catalina+) | 不同系统可能默认不同 |
用户体验 | 中等 | 高(插件支持好) | zsh 更适合喜欢个性化设置的用户 |
插件生态 | 一般 | 强(如 oh-my-zsh) | zsh 社区活跃,扩展性强 |
脚本兼容性 | 很强 | 较强 | bash 脚本大多可在 zsh 中运行 |