- 前言大家好,我是刚学 Linux 的大一新生,平时用 Xshell 远程连接 VMware 里的 Ubuntu 虚拟机上课。本次实验完整实操了局部变量、临时全局变量、永久全局环境变量、PATH 路径配置、Shell 数组、变量删除全部知识点,所有命令均在终端真实执行并附上截图,整理成体系化笔记方便复习。
一、核心概念知识框架
1. 局部变量(本地变量)
- 定义:仅存在当前 Shell 会话,子 Shell、新开终端、关闭终端全部失效
- 定义语法:
变量名=值,等号两侧不能加空格 - 特性:子进程无法读取,仅当前终端可用
- 查看:
echo $变量名、set(查看所有局部 + 全局变量)
2. 临时全局环境变量(export 导出)
- 定义:使用
export修饰变量,当前会话 + 所有子 Shell 均可读取 - 定义语法:
变量名=值 export 变量名 # 合并写法 export 变量名=值 - 特性:关闭终端自动销毁,仅本次会话生效
- 查看:
env、export(仅打印全局环境变量)
3. 永久全局环境变量(写入自启动文件)
- Shell 启动文件:
~/.bashrc(交互式终端,打开终端自动加载) - 原理:每次新开终端,系统自动读取
.bashrc内export变量,永久生效 - 生效命令:修改文件后执行
source ~/.bashrc不用重启终端 - 编辑工具:
vim ~/.bashrc
4. PATH 环境变量
- 作用:Shell 查找可执行命令的目录列表,系统输入指令时按 PATH 顺序检索程序
- 查看 PATH:
echo $PATH - 临时追加自定义目录:
export PATH=$PATH:/自定义目录 - 永久追加:将上面命令写入
~/.bashrc,source重载
5. 变量删除命令 unset
- 语法:
unset 变量名 - 作用:彻底清空当前会话内变量,
echo读取无输出
6. Shell 数组变量
- 定义:
数组名=(元素1 元素2 元素3) - 读取语法:
- 单个元素:
${数组名[下标]},下标从 0 开始 - 全部元素:
${数组名[*]}
- 单个元素:
- 修改元素:
数组名[下标]=新值 - 删除数组:
unset 数组名
二、分模块实操(附带对应截图说明)
模块 1:局部变量实操
执行命令
# 1.定义局部变量 my_variable='Hello World' # 2.打印变量 echo $my_variable # 3.进入子shell验证子进程无法读取 bash echo $my_variable # 4.子shell内重新赋值 my_variable='Hello' echo $my_variable # 5.退出子shell回到原会话,查看原变量不变 exit echo $my_variable截图说明
第一张截图完整记录上述操作:子 Shell 中无法读取父 Shell 局部变量;子 Shell 内部修改仅作用于自身,退出后原会话变量保持原值,直观证明局部变量仅当前会话有效。
模块 2:临时全局环境变量(export)
执行命令
# 1.定义并导出全局变量 my_variable='Global variable' export my_variable echo $my_variable # 2.进入子shell验证可读取 bash echo $my_variable # 3.子shell内修改变量 my_variable=NULL echo $my_variable # 4.退出子shell,原变量不变 exit echo $my_variable截图说明
第二张截图验证:export导出后的变量,子 Shell 可以正常读取;子 Shell 内修改仅作用于自身,父会话变量不受影响。
模块 3:删除变量 unset
执行命令
unset my_variable echo $my_variable截图说明
第三张截图执行unset删除变量后,再次 echo 无任何输出,变量彻底清空。
模块 4:永久全局变量(写入~/.bashrc)
执行命令
# 1.编辑bash自启动文件 vim ~/.bashrc # 文件末尾添加:# 用户自定义全局环境变量 export my_variable='Hello World!' # 2.重载配置,无需重启终端 source ~/.bashrc # 3.验证永久变量 echo $my_variable截图说明
第四、五张截图:vim 编辑配置文件写入 export 语句,执行 source 重载后,终端成功读取永久变量,新开终端也能正常读取。
模块 5:PATH 环境变量实操
执行命令
# 1.查看系统默认PATH echo $PATH # 2.临时新增自定义目录到PATH export PATH=$PATH:/home/jiayang7/test_dir # 3.验证自定义路径变量 echo $text_dir截图说明
第六、七张截图:打印原始 PATH 查看系统默认检索目录;使用$PATH拼接追加自定义目录,临时扩展命令查找路径。
模块 6:Shell 数组完整实操
执行命令
# 1.定义数组 my_test=(apple pear orange) # 2.读取全部元素 echo $my_test echo ${my_test[0]} echo ${my_test[1]} echo ${my_test[2]} echo ${my_test[*]} # 3.修改指定下标元素 my_test[1]=good echo ${my_test[*]} # 4.删除整个数组 unset my_test echo ${my_test[*]}截图说明
第八、九、十张截图:
- 数组下标从 0 开始,单独读取指定元素;
[*]一次性打印全部数组内容; - 修改下标 1 元素,数组内容同步更新;
unset删除数组后,读取无输出。
三、完整命令知识框架表
表格
| 操作类型 | 核心命令 | 功能用途 | 关键参数 / 语法说明 |
|---|---|---|---|
| 定义局部变量 | var=值 | 当前会话临时存储,子进程不可见 | 等号左右禁止空格;引号包裹带空格字符串 |
| 导出临时全局变量 | export var=值 | 变量传递给所有子 Shell | 仅当前终端生效,关闭失效 |
| 查看所有全局变量 | env | 只打印已导出的环境变量 | 区分 set(包含局部变量) |
| 查看全部变量 | set | 局部 + 全局变量全部输出 | 输出内容量大,适合排查本地变量 |
| 删除变量 / 数组 | unset var | 彻底销毁变量,无法读取 | 支持普通变量、数组整体删除 |
| 编辑永久环境变量 | vim ~/.bashrc | 配置交互式终端自启动环境变量 | 用户级永久生效,所有新开终端可用 |
| 重载 bash 配置 | source ~/.bashrc | 修改 bashrc 后立刻生效 | 不用关闭、重启终端 |
| 查看 PATH 路径 | echo $PATH | 查看系统命令检索目录 | 目录之间用冒号:分隔 |
| 追加 PATH 目录 | export PATH=$PATH:/xxx | 临时新增可执行文件检索路径 | $PATH保留原有所有路径,避免覆盖 |
| 定义数组 | arr=(a b c) | 创建有序数组存储多组数据 | 元素空格分隔,下标从 0 开始 |
| 读取单个数组元素 | ${arr[下标]} | 获取指定位置元素 | 下标数字写在 [] 内,外层必须加大括号 |
| 读取全部数组 | ${arr[*]} | 一次性输出数组所有元素 | *代表匹配数组全部下标 |
| 修改数组元素 | arr[下标]=新值 | 覆盖指定下标原有内容 | 仅修改当前下标,其余元素不变 |
四、实验总结
- 变量作用域区分
- 局部变量:无 export,仅限当前 Shell,子进程隔离;
- 临时全局变量:export 导出,父子 Shell 共享,终端关闭失效;
- 永久全局变量:写入
~/.bashrc,每次打开终端自动加载,长期生效。
- PATH 核心作用Linux 执行命令时会依次遍历 PATH 内目录寻找程序,自定义脚本文件夹追加进 PATH 后,任意目录下都能直接执行脚本,不用写完整绝对路径。
- Shell 数组核心要点数组下标从零起始,单独读取必须使用
${数组[下标]}格式;unset可直接清空整个数组,无单独删除单个元素的基础命令。 - 实操踩坑记录(大一新手避坑)① 变量赋值等号两边不能加空格,否则会报命令不存在;② 修改
.bashrc后必须执行 source,否则当前终端不会加载新变量;③ 数组直接echo $数组名只会输出下标 0 第一个元素,读取全部必须加[*];④ 临时 export 的变量关闭终端直接消失,需要长期使用必须写入自启动文件。
文末声明
本文为大一 Linux 课程实操作业,全部命令在 Xshell 远程连接 VMware Ubuntu 虚拟机环境真实运行,截图均为本人实操界面,原创整理知识框架供同专业同学参考学习。