linux中的shell是命令行解释器,是用户和linux操作系统内核之间的交互接口,负责接收用户输入的指令,将其解析后传递给内核执行,再把执行结果返回给用户。

shell的核心作用
linux内核负责管理系统的硬件资源、进程调度等核心工作,但是内核本身不直接和用户交互,shell就承担了中间交互的角色,主要作用包括以下几个方面:
- 指令解析:把用户输入的文本指令转换成内核能够识别的系统调用
- 环境管理:维护用户的工作目录、环境变量、权限等运行环境
- 脚本执行:支持用户编写shell脚本,批量执行一系列指令完成复杂任务
- 输入输出重定向:支持把命令的输入输出重定向到文件或者其他命令
常见的shell类型
linux系统支持多种不同的shell实现,不同类型的shell在语法、功能上会有一定差异,常见的类型如下:
| shell名称 | 特点说明 |
|---|---|
| bash | 目前linux系统默认的shell,兼容sh语法,功能完善,使用最广泛 |
| sh | 最早的bourne shell,语法简洁,兼容性较好,很多脚本会指定使用sh执行 |
| zsh | 功能更丰富的shell,支持更多插件和主题,交互体验更好 |
| fish | 语法更友好,自带自动补全功能,适合新手使用 |
如何查看当前使用的shell
我们可以通过以下方法查看当前系统登录使用的shell类型:
方法一:查看环境变量
执行以下命令可以查看当前shell的路径:
# 查看SHELL环境变量,输出当前shell的绝对路径 echo $SHELL
方法二:查看进程信息
通过查看当前进程的父进程信息,也能确认当前使用的shell:
# 查看当前shell进程的PID和名称 ps -p $$
简单的shell使用示例
我们可以在终端中直接输入shell指令完成基础操作,比如查看当前目录下的文件:
# 列出当前目录下的所有文件,包括隐藏文件 ls -la
也可以编写简单的shell脚本,比如创建一个输出问候语的脚本:
#!/bin/bash # 定义变量 name="linux用户" # 输出问候语 echo "你好,$name,欢迎使用shell"
保存上述代码为hello.sh文件后,赋予执行权限并运行:
# 赋予脚本执行权限 chmod +x hello.sh # 执行脚本 ./hello.sh
shell和内核的关系
可以把linux系统比作一家餐厅,内核就是后厨的厨师,负责实际做菜(处理硬件操作、进程调度等核心工作),而shell就是前台的服务员,负责接收顾客(用户)的点餐需求(指令),传递给后厨(内核),再把做好的菜(执行结果)端给顾客。没有shell的话,用户无法直接和内核交互,也就无法操作linux系统。
需要注意的是,shell本身是一个应用程序,不是linux内核的一部分,用户可以根据自己的需求切换不同的shell类型,只需要修改对应的配置文件即可。