理解Shell
什么是Shell?
Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁。具体来说,Shell具有以下双重身份:
命令语言:用户通过Shell界面输入命令,与操作系统内核进行交互
程序设计语言:可以编写脚本程序(Shell Script),实现自动化任务
Shell脚本的文件通常以 .sh 为后缀名,第一行通过 #! 指定解释器路径,例如:
bash
#!/bin/bash
这表示该脚本使用 /bin/bash 来解释执行。
二、Shell的主要类型
Linux系统支持多种Shell,常见的有:
Shell名称 路径 特点
Bourne Shell /usr/bin/sh 或 /bin/sh 早期标准Shell
Bourne Again Shell /bin/bash 最常用,多数Linux默认Shell
C Shell /usr/bin/csh C语言风格的Shell
K Shell /usr/bin/ksh 功能强大的商业Shell
Shell for Root /sbin/sh 供root用户使用的Shell
💡 提示:在日常工作中,/bin/sh 和 /bin/bash 通常不做严格区分,#!/bin/sh 也可以改为 #!/bin/bash。
用户默认启动的Shell程序取决于 /etc/passwd 文件中用户记录的第7个字段。当用户登录虚拟控制台或启动终端仿真器时,默认Shell便会运行。
三、Shell的父子关系与进程结构
3.1 父Shell与子Shell
登录终端或启动终端仿真器时,系统启动的是父Shell(交互式Shell)
在父Shell中输入 bash 命令,会创建一个子Shell(Child Shell)
3.2 查看进程树
使用 ps --forest 命令可以直观地展示Shell进程的嵌套结构:
PID(Process ID):当前进程ID
PPID(Parent Process ID):父进程ID
每输入一次 bash,就创建一个新的子Shell。通过 exit 命令可以退出子Shell,返回父Shell。
3.3 命令行参数
bash 命令支持多种启动参数,可通过 man bash 或 bash --help 获取帮助信息
更多推荐



所有评论(0)