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

Linux Shell 基础全解|Shell 类型、进程关系、内建命令 history 与 alias 实操

Linux Shell 基础全解|Shell 类型、进程关系、内建命令 history 与 alias 实操
📅 发布时间:2026/7/7 14:47:14

CSDN完整文章(无表格、无截图板块,可直接复制发布,适配Linux Shell课程作业)

标题:Linux Shell基础全解|Shell类型、进程关系、内建命令history与alias实操(Xshell完整演示)

一、前言

本文基于Xshell远程连接Linux系统实操,完整梳理Shell核心知识点,搭建系统化知识框架,包含概念解析、完整操作命令、实验现象对比,覆盖课程全部考点:

  1. Shell的类型
  2. Shell进程、父子关系
  3. Shell两种运行模式
  4. 内建命令 vs 外部命令区分
  5. 内建命令history完整用法(配套课堂练习题)
  6. 内建命令alias别名配置实操

二、Shell基础体系知识框架

2.1 Shell的类型

Shell是用户与Linux内核之间的交互解释器,主流Shell分类与特点:

  1. sh:最原始的Bourne Shell,功能基础,早期Unix系统默认使用。
  2. bash:Bourne Again Shell,sh的增强版本,支持命令历史、别名、脚本拓展功能,CentOS、Ubuntu等主流Linux发行版默认Shell。
  3. csh/tcsh:语法贴近C语言,日常运维极少使用。
  4. zsh:高度自定义终端,拥有强大自动补全、界面美化功能,开发人员常用。

实操命令:

# 查看系统全部支持的Shell类型cat/etc/shells# 查看当前终端正在使用的Shellecho$SHELL

2.2 Shell进程与父子关系

  1. 核心概念
    打开Xshell连接服务器时,系统会创建父Shell进程;在父Shell中执行bash、sh会生成全新子Shell进程。子Shell会继承父Shell的环境变量,但拥有独立内存、独立命令历史;子进程退出不会对父Shell造成任何影响。
  2. 实操命令
# 打印当前Shell进程PID编号echo$$# 创建子Shellbash# 再次打印PID,数字发生变化,代表进入全新子进程echo$$# 退出子Shell,返回父Shell环境exit
  1. 父子进程关键特性
  • 子Shell无法修改父Shell的自定义变量、临时别名、内存中的命令历史;
  • 父Shell进程关闭后,所有关联的子Shell会同步销毁。

2.3 Shell两种运行模式

1)交互式Shell(日常使用模式)

Xshell登录后默认进入该模式,支持人机交互,等待用户输入命令,会维护命令历史、临时别名等会话数据。
直观特征:终端存在$或#提示符,输入命令后实时输出执行结果。

2)非交互式Shell(脚本运行模式)

执行.sh脚本文件时自动启用,无交互界面,仅批量顺序执行脚本内预设命令。
直观特征:不会加载交互式专属配置文件~/.bashrc。

区分验证命令:

# 判断当前Shell是否为交互式echo$-# 输出内容包含字母i则为交互式,无i代表非交互式

2.4 内建命令 vs 外部命令

1)概念区分
  • 内建命令:直接集成在bash解释器内部,执行时不会创建子进程,运行速度更快,常见命令有history、alias、cd、exit。
  • 外部命令:存放在磁盘中的独立可执行文件,执行时会新建子进程加载文件运行,常见命令有ls、cat、mkdir。
2)区分实操命令
# type命令可判断命令类型typehistory# 输出history is a shell builtin,代表内建命令typecat# 输出cat is /usr/bin/cat,代表外部命令

三、核心内建命令实操(Xshell完整演示)

3.1 history 命令(课堂习题完整演示)

1)命令用途

记录当前终端所有执行过的操作命令,数据分为两部分存储:一部分存放在当前Shell内存缓存,另一部分持久化保存在磁盘文件~/.bash_history中。

2)核心参数说明

history:查看内存中全部命令历史,输出附带行号,可通过!行号快速重复执行历史命令。
history -a:将当前会话内存里新增、还未写入磁盘的命令,追加写入~/.bash_history文件末尾。
history -w:覆盖写入,用当前内存完整历史替换磁盘上的~/.bash_history文件原有内容。
history -r:读取磁盘文件内的历史命令,加载到当前Shell内存中。
history -c:清空当前Shell内存里的全部历史记录,不会删除磁盘文件内已保存的内容。

3)课堂习题实操演示
习题1:对比 history 与 cat ~/.bash_history 输出差异

操作步骤:

# 1. 输入两条全新测试命令(仅存入内存缓存,不会自动写入磁盘)echo"test1"echo"test2"# 2. 查看内存中的命令历史,带行号,包含刚输入的两条测试命令history# 3. 读取磁盘持久化历史文件,无行号,看不到本次新输入的两条命令cat~/.bash_history ```![请添加图片描述](https://i-blog.csdnimg.cn/direct/9839b8ccfcaa4c8b910b38df9cfddec6.png)![请添加图片描述](https://i-blog.csdnimg.cn/direct/a1e4f134ca2743008676242ad29ff48c.png)差异总结:1. 数据源不同:history读取当前Shell内存缓存;cat读取磁盘持久化文件。2. 输出格式不同:history每条命令前带有数字行号;~/.bash_history仅输出纯命令文本。3. 时效性不同:新终端会话内刚执行的命令仅存在内存,磁盘文件不会实时同步。##### 习题2:执行history -a后查看文件变化```bash# 将内存中未落盘的新增命令追加写入磁盘历史文件history-a# 再次读取文件,文件末尾会新增刚才两条测试命令cat~/.bash_history![请添加图片描述](https://i-blog.csdnimg.cn/direct/587d9c63c33540b5ad4869c98bd13246.png)

变化说明:history -a会手动同步当前会话内存缓存到磁盘文件,执行后磁盘文件内容与内存历史完全一致。


3.2 alias 别名内建命令

1)用途

给冗长的命令自定义简短别名,简化重复输入操作,临时别名仅保存在当前Shell内存中。

2)核心操作命令
# 1. 查看当前终端全部已定义的别名alias# 2. 创建临时别名,关闭终端后自动失效aliasll='ls -l --color=auto'# 直接输入ll即可执行ls -l --color=auto# 3. 删除指定单个别名unaliasll# 4. 配置永久生效别名(写入交互式Shell配置文件)vim~/.bashrc# 在文件末尾添加 alias ll='ls -l --color=auto'# 重载配置文件,无需重启终端即可生效source~/.bashrc
知识点补充

alias属于内建命令,新开子Shell无法继承父Shell的临时别名;想要永久生效必须写入~/.bashrc并执行source重载配置。


四、完整知识体系总结

  1. Shell基础模块
    Shell主流类型,系统默认bash;Shell父子进程隔离特性,PID区分父子进程;Shell分为交互式、非交互式两种运行模式。
  2. 命令分类模块
    内建命令:history、alias、cd等,内存直接执行,不生成子进程;外部命令:cat、ls等,磁盘独立文件,执行新建子进程。
  3. 重点内建命令模块
    history:内存+磁盘双存储机制,-a/-w/-r/-c参数功能,配套课堂实验对比演示;
    alias:临时别名创建删除、永久别名配置方法,子进程别名继承规则。

五、实验总结

  1. Shell父子进程环境相互隔离,子进程无法修改父进程内存内的数据;
  2. 内建命令运行效率高于外部命令,无需创建子进程,执行速度更快;
  3. history命令区分内存缓存与磁盘持久化文件,history -a是手动同步缓存到磁盘的核心操作;
  4. alias临时别名仅当前会话生效,永久配置需要写入bash配置文件并重载。

相关新闻

  • 终极Blender UV工具集:5个核心功能让3D纹理制作效率提升300%
  • 图数据库平台
  • 基于USB Bootloader注入的华为麒麟设备解锁方案:破解Bootloader限制的完整技术实践

最新新闻

  • 基于STM32F427ZI与Si4732的数字收音机系统设计
  • Krita-AI-Diffusion终极优化指南:让低配置电脑也能流畅运行AI绘画
  • 基于MA12070与PIC18F45K22的高保真音频系统设计
  • 终极免费解决方案:一键永久激活Windows和Office的完整指南
  • 如何快速构建系统发育树:IQ-TREE终极生物信息学工具指南
  • Luyten:Java反编译从入门到精通的完整实战指南

日新闻

  • Android逆向分析全能助手:集成化工具链与自动化工作流设计
  • 面搜索(Faceted Search)原理与工程实践指南
  • 神经网络调参避坑指南:从5个常见Loss曲线形态定位超参数问题

周新闻

  • 基于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 号