当前位置: 首页 > news >正文

Linux环境变量课堂笔记+课后习题

一、课堂核心知识点总结

  1. 环境变量基础概念

(1) 定义:由 变量名=值 组成,用于在操作系统、Shell、程序间传递环境配置数据,bash中分为全局变量、局部变量两类。
(2) 命名规范:系统内置变量全大写;自定义局部变量建议小写,避免覆盖系统变量;赋值时 变量、=、值 之间不能有空格。
(3)区分全局/局部变量- 全局变量:当前Shell及所有子Shell均可访问, env/printenv 查看; echo $变量名 读取单变量。
局部变量:仅当前创建Shell可用,子Shell无法读取; set 可查看全部变量(全局+局部+自定义)。

2.自定义变量操作

(1)局部变量

直接赋值: 变量=值 ;值含空格需单/双引号包裹;退出Shell后自动失效。

(2)全局变量

先定义局部变量,再用 export 变量 导出为全局;子Shell修改该变量不会同步父Shell原值。

(3)删除变量

unset 变量名 (操作变量不加,读取变量才加);子Shell删除全局变量仅作用于自身,父Shell不受影响。

  1. Shell默认内置环境变量

(1)Bourne基础变量:HOME、IFS、MAIL、CDPATH、提示符PS1/PS2等;
(2)Bash独有变量:BASH、HOSTNAME、LINES、PWD、UID、GROUPS数组等,记录会话、用户、终端信息。

  1. PATH可执行文件搜索路径

(1) 作用:Shell输入命令时,按PATH内冒号分隔的目录依次查找程序;目录不在PATH中则无法直接运行脚本。
(2)临时追加路径: PATH=$PATH:/目标目录 ,仅当前会话生效,重启/重登失效。
(3) 脚本运行前置: chmod u+x 脚本.sh 赋予执行权限。

  1. 环境变量持久化配置文件(登录Shell自动加载)

(1) 系统级(所有用户生效): /etc/profile ,加载 /etc/profile.d/ 下所有.sh脚本;
(2) 用户级(仅当前用户)加载顺序: .bash_profile → .bash_login → .profile ,只会执行第一个存在文件;文件内会自动引入 .bashrc ;
(3) 永久配置变量:将export/PATH修改写入上述启动文件,登录自动生效。

  1. Shell数组变量

(1)定义: 数组名=(值1 值2 值3) ,下标从0开始;
(2)读取: ${数组[下标]} 取单个元素、 ${数组[*]} 读取全部元素;
(3)#修改/删除: 数组[下标]=新值 修改元素; unset 数组[下标] 删除单个元素(保留空位); unset 数组名 清空整个数组。

课后练习

实验一、父shell定义局部变量,子shell查看
1.父shell创建局部变量
2.父shell先验证
3.进入子shell

实验二、子shell定义局部变量,退出后父shell查看
1.进入子shell,在内部定义局部变量
2.退出子shell后,回到父shell查看

补充验证:导出为全局变量后可跨shell
1.定义并导出全局变量


1.查看env输出

包含PATH,HOME,ESEER,PWD、自定义export变量等
2.查看printenv输出

和env功能几乎完全一致,仅展示全局环境变量
3.查看set输出

输出范围最大:全局变量+局部自定义变量+shell内置函数+shell参数
4.父shell查看$PWD

5.子shell查看 $PWD


1.父shell先定义全局变量
2.进入子shell查看父shell全局变量
3.在子shell中删除该全局环境变量
4.退出子shell,查看父shell变量
5.在父shell中删除全局变量
6.查看父shell变量值


1.创建shell脚本文件test.sh
2.直接尝试运行文件
3.临时设置PATH环境变量,再次运行
4.重启系统后再次执行

重启后再次运行失败

1.父shell定义变量,export导出全局
2.进入子shell查看变量
3.子shell给变量赋新值
4.字shell再次export导出并查看

http://www.jsqmd.com/news/1140990/

相关文章:

  • 计算机毕业设计之基于贝叶斯算法的共享单车热点区需求预测
  • 工业信号隔离与处理:FOD4216光电耦合器实战解析
  • 树莓派5基础常用指令
  • Kubernetes RBAC权限治理:多租户环境下最小权限原则的落地与自动化审计方案
  • QKeyMapper终极指南:Windows键鼠手柄一键映射完全教程
  • PDF文档对比神器diff-pdf:3分钟快速上手,工作效率翻倍
  • Solidity Gas 优化实战:存储槽紧凑布局与批处理模式的精确计量
  • 如何高效下载30+主流文档平台内容?kill-doc浏览器脚本终极指南
  • XSS Hunter部署实战:SSL证书与子域名管理核心指南
  • AI 多轮对话状态机:不是所有聊天都需要无限轮次
  • 给农田装上“五官”:五情监测如何“读懂”土地?
  • OpenClaw本地部署实战:从零构建可调试Agent工作流环境
  • 计算机毕业设计之基于jsp民宿网站的设计与实现
  • 收藏!普通程序员转型AI应用开发的全记录,30岁+也能抓住风口!
  • 终极老旧Mac升级指南:OpenCore Legacy Patcher完整解决方案
  • MySQL大表DDL操作:pt-online-schema-change原理与避坑指南
  • GB/T 15089-2001 车辆分类标准:M/N/O/L/G 5类车型的3大核心参数与场景解析
  • 终极指南:5分钟学会用ObjToSchematic将3D模型转为Minecraft建筑!✨
  • 专业指南:PotatoNV华为设备Bootloader解锁工具完整实战教程
  • 第二章Netty,Netty服务端+客户端完整可运行示例,流程分析
  • C++中的异常处理机制(try、catch、throw)
  • 3个关键技巧让旧Mac焕发新生:OpenCore Legacy Patcher完全解析
  • 3大核心功能解析:微软XML Notepad如何让XML编辑变得简单高效
  • 6个额度永不过期的SERP API(2026)
  • 2026 LLM-RAG商用GEO实体加权质控方案|江西灵溪智引数字科技自研落地体系
  • RFID技术在固定资产盘点中的应用
  • 3种高效策略深度解析大气层系统架构:从性能瓶颈到优化方案
  • AI工作流搭建零基础教程,棱镜Ai拖拽式操作不用写一行代码
  • 怎样高效备份QQ空间历史数据:GetQzonehistory实用工具完全指南
  • 计算机毕业设计之基于yolo的数据可视化在道路交通的应用