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

📅 2026/7/7 14:39:38
Linux Shell 基础全解|Shell 类型、进程关系、内建命令 history 与 alias 实操
CSDN完整文章无表格、无截图板块可直接复制发布适配Linux Shell课程作业标题Linux Shell基础全解Shell类型、进程关系、内建命令history与alias实操Xshell完整演示一、前言本文基于Xshell远程连接Linux系统实操完整梳理Shell核心知识点搭建系统化知识框架包含概念解析、完整操作命令、实验现象对比覆盖课程全部考点Shell的类型Shell进程、父子关系Shell两种运行模式内建命令 vs 外部命令区分内建命令history完整用法配套课堂练习题内建命令alias别名配置实操二、Shell基础体系知识框架2.1 Shell的类型Shell是用户与Linux内核之间的交互解释器主流Shell分类与特点sh最原始的Bourne Shell功能基础早期Unix系统默认使用。bashBourne Again Shellsh的增强版本支持命令历史、别名、脚本拓展功能CentOS、Ubuntu等主流Linux发行版默认Shell。csh/tcsh语法贴近C语言日常运维极少使用。zsh高度自定义终端拥有强大自动补全、界面美化功能开发人员常用。实操命令# 查看系统全部支持的Shell类型cat/etc/shells# 查看当前终端正在使用的Shellecho$SHELL2.2 Shell进程与父子关系核心概念打开Xshell连接服务器时系统会创建父Shell进程在父Shell中执行bash、sh会生成全新子Shell进程。子Shell会继承父Shell的环境变量但拥有独立内存、独立命令历史子进程退出不会对父Shell造成任何影响。实操命令# 打印当前Shell进程PID编号echo$$# 创建子Shellbash# 再次打印PID数字发生变化代表进入全新子进程echo$$# 退出子Shell返回父Shell环境exit父子进程关键特性子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. 输入两条全新测试命令仅存入内存缓存不会自动写入磁盘echotest1echotest2# 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. 创建临时别名关闭终端后自动失效aliasllls -l --colorauto# 直接输入ll即可执行ls -l --colorauto# 3. 删除指定单个别名unaliasll# 4. 配置永久生效别名写入交互式Shell配置文件vim~/.bashrc# 在文件末尾添加 alias llls -l --colorauto# 重载配置文件无需重启终端即可生效source~/.bashrc知识点补充alias属于内建命令新开子Shell无法继承父Shell的临时别名想要永久生效必须写入~/.bashrc并执行source重载配置。四、完整知识体系总结Shell基础模块Shell主流类型系统默认bashShell父子进程隔离特性PID区分父子进程Shell分为交互式、非交互式两种运行模式。命令分类模块内建命令history、alias、cd等内存直接执行不生成子进程外部命令cat、ls等磁盘独立文件执行新建子进程。重点内建命令模块history内存磁盘双存储机制-a/-w/-r/-c参数功能配套课堂实验对比演示alias临时别名创建删除、永久别名配置方法子进程别名继承规则。五、实验总结Shell父子进程环境相互隔离子进程无法修改父进程内存内的数据内建命令运行效率高于外部命令无需创建子进程执行速度更快history命令区分内存缓存与磁盘持久化文件history -a是手动同步缓存到磁盘的核心操作alias临时别名仅当前会话生效永久配置需要写入bash配置文件并重载。