linux shell有哪些类型
在Linux系统中,Shell是用户与操作系统内核交互的命令解释器。常见的Shell类型及其特点如下:
1. Bourne Shell (sh)
- 开发者: Stephen Bourne (1977年)
- 特点:
- 最早的Unix Shell,语法简洁。
- 不支持交互式功能(如命令历史、补全)。
- 路径:
/bin/sh
(通常作为其他Shell的兼容模式符号链接)。
2. Bash (Bourne-Again Shell)
- 开发者: GNU项目 (1989年)
- 特点:
- 最常用的Linux默认Shell,兼容
sh
并扩展功能。
- 支持命令历史、补全、数组、算术运算等。
- 脚本扩展名:
.sh
。
- 路径:
/bin/bash
。
3. Zsh (Z Shell)
- 开发者: Paul Falstad (1990年)
- 特点:
- 强大的交互功能(自动补全、主题插件)。
- 兼容
bash
,适合开发者和高级用户。
- 默认用于macOS(自10.15起)。
- 路径:
/bin/zsh
。
4. Korn Shell (ksh)
- 开发者: David Korn (1983年)
- 特点:
- 结合
sh
和C Shell
优点,支持脚本编程。
- 有开源版本(如
pdksh
、mksh
)。
- 路径:
/bin/ksh
。
5. C Shell (csh)
- 开发者: Bill Joy (1978年)
- 特点:
- 语法类似C语言,适合有C背景的用户。
- 提供交互功能(如命令历史)。
- 已被
tcsh
取代。
- 路径:
/bin/csh
。
6. Tcsh (Tenex C Shell)
- 开发者: 基于
csh
的增强版
- 特点:
- 改进
csh
,支持命令行编辑、补全。
- 常用于BSD系统。
- 路径:
/bin/tcsh
。
7. Fish (Friendly Interactive Shell)
- 开发者: 2005年开源项目
- 特点:
- 用户友好,自动补全、语法高亮。
- 不兼容
bash
,适合交互式使用。
- 路径:
/bin/fish
(需安装)。
8. Dash (Debian Almquist Shell)
- 特点:
- 轻量级,速度快,适合脚本执行。
- Debian/Ubuntu中
/bin/sh
的默认链接。
- 路径:
/bin/dash
。
其他变种
- Almquist Shell (ash): 轻量版
sh
,用于嵌入式系统。
- BusyBox: 集成多种工具(包括
ash
),常见于路由器。
如何查看/切换Shell?
查看当前Shell:
echo $SHELL
查看可用Shell:
cat /etc/shells
切换Shell(临时):
/bin/zsh # 直接运行目标Shell路径
永久更改:
chsh -s /bin/zsh # 需重启终端生效
选择建议
- 脚本兼容性: 使用
bash
或sh
。
- 交互体验: 选择
zsh
或fish
。
- 性能敏感场景: 使用
dash
。
不同Shell的语法差异可能影响脚本执行,建议在脚本首行指定解释器(如#!/bin/bash
)。