第六次作业提交 📅 2026/7/8 8:40:46 Linux Shell全面理解实操笔记CSDN博客完整版一、文章前言学习Linux Shell相关知识使用Xshell远程连接Linux虚拟机完成全部实操。本文完整覆盖课程小结全部核心知识点Shell的类型、Shell父子进程关系、Shell运行模式、内建命令与外部命令区分、history与alias两大内置命令实操搭建完整知识框架。二、Shell基础概念Shell是C语言编写的程序是用户与Linux操作系统内核交互的桥梁兼具交互命令工具、脚本编程语言双重属性。后缀为.sh的文件称为Shell脚本脚本首行#!/bin/bash用于指定脚本解释器。三、Shell的类型1. 常见Shell种类shBourne Shell早期基础Shell系统软链接通常指向dashbashBourne Again Shell绝大多数Linux系统默认交互式Shell功能最完善csh/tcsh语法贴近C语言ksh融合sh与csh特性dash轻量Shell多用于系统开机、简易脚本执行2. 查看系统Shell相关实操查看用户默认登录Shell配置文件查看系统所有Shell程序文件查看当前默认Shell、正在运行的Shell临时切换dash环境执行/bin/dash进入子Shellexit仅退出dash不会断开Xshell远程连接。四、Shell父子进程关系1. 核心概念父Shell登录终端自动启动的顶层交互Shell子Shell执行bash、()进程列表、后台任务时创建的独立子进程PID进程唯一编号PPID当前进程的父进程编号。子Shell拥有独立运行环境内部切换目录、自定义变量不会影响外层父Shell。2. 实操演示树形查看进程嵌套关系创建多层子Shell并观察进程树逐层退出子Shell每执行一次exit销毁一层子Shell直到回到初始登录父Shell若直接在父Shell执行exit会直接断开Xshell连接。五、Shell的运行模式模式1命令列表分号;无新子Shell多条命令用;分隔在当前父Shell顺序执行不会创建子Shell。环境变量$BASH_SUBSHELL输出0代表无嵌套子Shellcd切换目录永久生效。模式2进程列表圆括号()生成子Shell命令包裹在()内系统新建独立子Shell执行环境隔离。$BASH_SUBSHELL输出1括号内cd切换目录退出括号后父Shell路径不会改变。嵌套写法(pwd;(echo $BASH_SUBSHELL))输出2代表两层子Shell。模式3后台运行模式 协程coproc后台执行命令末尾添加放入后台运行终端可继续输入其他指令。协程 coproc仅Bash支持需先执行bash切换环境coproc在后台创建可通信子Shell支持自定义进程名称大括号前后必须保留空格末尾加分号。区分表格运行方式是否生成子Shell环境是否隔离; 命令列表否当前Shell修改永久生效() 进程列表是子Shell操作不影响外层 后台任务是后台运行不占用终端六、内建命令与外部命令1. 外部命令存储在/bin、/usr/bin等目录的独立可执行文件执行时会创建子进程运行效率低。例如ps、ls、sleep。2. 内建命令编译进bash本体无独立磁盘文件无需创建子进程执行速度更快。cd、exit、history、alias均为内置命令。七、内置命令history课程练习题原理输入的命令先存放在内存关闭终端/执行exit时才自动写入家目录隐藏文件.bash_history。练习题1对比history与.bash_history输出差异history读取内存包含本次登录全部新命令.bash_history仅保存上一次关闭终端前的历史本次新命令不会出现。练习题2执行history -a后再次对比history -a强制将内存中本次会话命令写入历史文件两条命令输出内容完全同步。history快捷调用命令!! 执行上一条命令!编号 执行对应编号的历史命令!字符串 执行最近以该字符串开头的命令八、内置命令alias别名alias用于给长命令自定义简写仅当前Shell会话临时生效新开终端失效。查看系统预设别名自定义别名删除自定义别名⚠️ 注意alias赋值左右不能加空格否则会报错。九、整体知识框架总结Shell分为bash、sh、dash等多种类型bash为Linux默认交互Shell登录终端生成父Shellbash、()、后台任务都会创建隔离环境的子ShellShell拥有三种运行模式分号命令列表、括号子shell、后台/协程命令分为内建、外部两类内建命令无进程开销执行效率更高history管理命令历史默认退出终端同步文件history -a可手动强制同步alias自定义命令简写简化高频指令输入仅当前会话临时生效。