尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Shell的理解

Shell的理解
📅 发布时间:2026/7/5 3:09:48

一、什么是Shell & 系统有哪些Shell
1. 查看自己默认用的Shell
我们登录Linux终端时自动运行的shell,写在 /etc/passwd 文件里,第7段就是默认shell。
# 查看自己用户的配置
cat /etc/passwd | grep 你的用户名
示例输出:
zhangzy:x:1165:1165:,,,:/home/zhangzy:/bin/bash
末尾 /bin/bash 代表我默认使用bash。
2. Linux里常见的Shell
系统所有shell程序都放在 /bin 文件夹,执行这条命令查看全部:
ls -lF /bin/*sh
常用shell简单介绍:

1. bash:最常用,我们上课全程用这个

2. dash:轻量小shell,系统开机脚本用它

3. zsh、csh:拓展功能更强的shell,可选使用

4. sh:不是独立程序,是dash的快捷链接

3. 切换不同shell

想临时体验dash,直接输入程序名;想退出回到原来窗口输入exit:
/bin/dash # 进入dash
exit # 退出dash,返回bash
二、父Shell和子Shell(本节课重点)

1. 基础概念

父Shell:打开终端、登录系统自动弹出的第一个bash窗口,最顶层shell。

子Shell:在父shell里输入bash、用括号包命令、后台运行程序时,系统新建的一层shell。

2. 实操:创建多层子shell
bash # 创建第1层子shell
bash # 创建第2层子shell
ps --forest # 查看进程树,能看到层层嵌套的bash
exit # 退出一层子shell,回到上一层
每输一次bash就多一层子shell,exit一层一层往上退。

3. 怎么判断当前是不是子shell

系统自带变量 $BASH_SUBSHELL:

输出0 = 当前是父shell

输出1/2 = 处于1层/2层子shell

对比两种命令写法

1. 分号 ; 执行(不产生子shell)
pwd; ls; echo $BASH_SUBSHELL
# 结果输出0,所有命令在父shell运行,cd会改变当前文件夹
2. 括号 () 执行(生成子shell)
(pwd; ls; echo $BASH_SUBSHELL)
# 结果输出1,cd只会在括号内生效,不会影响外面终端
4. 后台运行命令 & jobs管理

命令末尾加 &,程序放到后台跑,不卡住终端:
sleep 60 & # 后台休眠60秒
jobs # 查看所有后台任务
jobs -l # 查看后台任务+进程编号
5. 协程 coproc(拓展内容)

coproc 会自动在后台开一个子shell运行程序,语法有严格要求:

1. { 前后必须有空格

2. 最后一条命令末尾加分号 ;

3. ; 和 } 中间留空格
# 默认名字协程
coproc sleep 10
# 自定义协程名称
coproc MyJob { sleep 10; }
jobs -l # 查看协程任务
三、两种命令:内建命令 和 外部命令

1. 外部命令

是独立存在的文件,存放在 /bin、/usr/bin,运行时会新建子进程,速度慢。
比如ps、ls都属于外部命令。
which ps # 查看命令文件位置
type -a ps
2. 内建命令

直接集成在bash内部,没有单独文件,运行不需要新建子进程,速度更快。
cd、exit、history、alias都是内置命令。
type cd # 输出 cd is a shell builtin
type exit
3. 特殊命令:既有内置、又有外部文件
echo、pwd 同时有两种版本:
type -a echo
# 输出两行:
# echo is a shell builtin(内置)
# echo is /bin/echo(外部文件)
which echo # 只显示外部文件路径

相关新闻

  • 备孕辅酶Q10选还原型还是氧化型?高仕星辅酶Q10成分全解
  • 技术专访|罗长才:深度拆解GEO与区块链密钥体系、账户模型的双向赋能落地逻辑
  • 毕业季全网刚需,2026 新版 AI 论文软件盘点,兼顾写作、降重、模拟审稿

最新新闻

  • 3个关键步骤彻底掌握Pyfa:EVE玩家的离线配装革命
  • 成都茶台定制哪家好
  • 5个步骤搭建免费动作捕捉系统:FreeMoCap完全指南
  • 自己动手开发编译器(九)CPS风格的解析器组合子
  • PyTorch 1.13 BCEWithLogitsLoss 实战:3 个代码示例解析数值稳定性优势
  • DBeaver驱动包:一站式解决数据库连接配置难题

日新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号