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

Linux环境变量课程内容完整总结

一、环境变量基础概念

  1. 定义
    环境变量是变量名=值格式的键值对,由操作系统/Shell维护,用于存储会话、系统、用户环境信息,脚本与程序可快速读取使用;bash依靠环境变量保存工作环境数据。系统环境变量规范全大写,自定义局部变量建议小写避免覆盖系统变量。
  2. bash内置默认环境变量
    分为Bourne原生变量、bash扩展自有变量两类,核心常用变量:
    | 变量 | 作用 |
    |------|------|
    | HOME | 当前用户家目录 |
    | PATH | 命令搜索目录,多路径用:分隔 |
    | PWD | 当前工作目录 |
    | PS1/PS2 | 主、次命令行提示符 |
    | IFS | 文本分割字段符号 |
    | RANDOM | 生成0~32767随机数 |
    | UID/EUID | 用户真实ID、有效ID |
    | SHELL | 当前Shell程序路径 |

二、环境变量分类:全局变量 & 局部变量

1. 全局环境变量

  • 作用域:当前Shell会话+所有子Shell均可访问,子Shell会继承父Shell全局变量;子Shell修改变量仅自身生效,不影响父Shell。
  • 查看命令:
    • env/printenv:只查看全局环境变量;
    • echo $变量名:单独打印某个变量值,引用变量必须加$

2. 局部环境变量

  • 作用域:仅定义它的当前Shell可见,子Shell无法读取。
  • 查看命令:set,输出包含局部、全局、自定义所有变量,自动字母排序。

3. 变量创建规则

  1. 赋值时变量=值,等号两侧不能有空格
  2. 值含空格需用单/双引号包裹,如var='hello world'
  3. 重复赋值会直接覆盖原有值。

三、自定义变量操作(增、导出、删、永久生效)

1. 创建局部变量

直接赋值:test=123,仅当前终端可用,子Shell读取为空。

2. 转为全局变量(export)

  1. 两步法:先定义局部变量,再export 变量名
  2. 一步法:export test="全局变量"
  3. 特性:子Shell可读取;子Shell内修改该变量,退出后父Shell原值不变。

3. 删除变量 unset

  • 语法:unset 变量名,操作变量不加$;读取变量才加$
  • 特性:子Shell删除仅对子Shell生效,父Shell变量不受影响;临时变量关闭终端直接消失。

4. 变量永久生效(写入配置文件)

临时定义的变量重启Shell/系统会丢失,持久化配置步骤:

  1. 编辑用户配置文件:vim ~/.bashrc
  2. 文件末尾添加export 变量=值
  3. 重载配置立即生效:source ~/.bashrc
    原理:每次登录启动bash会自动读取.bashrc执行内部命令。

四、PATH环境变量(命令搜索路径)

  1. 作用:Shell输入命令时,按PATH内目录顺序查找可执行程序,目录间用冒号:分隔;系统自带软件路径默认已写入PATH,可直接输入命令执行。

五、存储环境变量的系统/用户配置文件

登录Shell会依次读取多份启动文件,分为系统级用户级两类:

  1. 系统全局文件(所有用户生效)
    • /etc/profile:系统主启动文件,所有用户登录自动执行;内部会加载/etc/bash.bashrc,并遍历/etc/profile.d/*.sh脚本;
  2. 用户私有隐藏文件(仅当前用户生效,家目录下)
    • ~/.bash_profile/~/.bash_login/~/.profile:登录Shell加载;
    • ~/.bashrc:交互式Shell必加载,.profile会主动引入该文件,自定义环境变量首选此文件;
    • 文件均为.开头隐藏文件,ls -a可查看。

六、Bash数组变量

  1. 基础特性:仅支持一维数组,存储多个值;括号()定义,元素空格分隔;下标从0开始。
  2. 基础语法
    • 定义:arr=(one two three)
    • 读取单个元素:${arr[下标]},如${arr[1]}取第二个元素;
    • 读取全部元素:${arr[*]}
  3. 数组修改与删除
    • 修改指定下标值:arr[1]=five
    • 删除单个元素:unset arr[1],仅清空值,下标保留;
    • 删除整个数组:unset arr

七、配套练习与课后作业

三大课堂练习题

  1. 练习1:env/printenv/set对比查看;父子Shell查看$PWD;区分全局、局部变量可见性;
  2. 练习2:export导出全局变量;子Shell修改变量验证不影响父Shell;
  3. 练习3:数组创建、修改成员、删除单个元素、删除整个数组。

八、核心小结

  1. Linux环境变量分全局、局部两类,核心区别是能否被子Shell继承
  2. export实现局部变量全局化,unset删除变量;临时变量写入.bashrc实现永久生效;
  3. PATH决定系统命令检索路径,可手动追加自定义程序目录;
  4. bash登录时加载系统+用户多层配置文件,统一初始化环境变量;
  5. bash支持一维数组,可批量存储、修改、删除多组数据。
http://www.jsqmd.com/news/1145599/

相关文章:

  • 鼎讯TXMN-BLSG1 实测风电基地,电磁仿真有了规范化工具
  • 影刀RPA API文档自动生成:从代码到Swagger
  • 个别设备 OTG 偶发无法认U盘。
  • 2026 国产工业阀门品牌评测:一份从认证到响应的选型参考
  • SSE 和 WebSocket 怎么选?实时推送场景的技术取舍
  • 毕业证公证认证要多久?毕业证公证认证材料有啥?
  • 微信 API 开发实战:基于 GeWe 构建自动化任务调度系统
  • 过表达质粒构建伯远生物过表达质粒构建
  • 【计算机Java毕业设计案例】基于 Web 的学生线上学习测评系统的设计与实现 基于前后端分离的智能在线教学学习平台(程序+文档+讲解+定制)
  • 英语单词学习系统的设计与实现(基于艾宾浩斯遗忘曲线的智能复习机制、语音朗读、多题型测试与错题自动收录、Echarts图形化分析)
  • 具身智能体在线归因系统:让机器人实时诊断导航异常
  • 影刀RPA AWS云服务自动化:EC2 S3管理实战
  • 【大模型应用】Loop Engineering
  • 结构化交互:多机器人协同性能的底层天花板
  • Java计算机毕设之基于前后端分离的校园企业招聘服务系统的设计与实现 基于 SpringBoot 的岗位招聘信息管理系统(完整前后端代码+说明文档+LW,调试定制等)
  • 二手应用材料 AMAT0041-90952 加热盘技术规格详解
  • 卧床老人不遭罪!居家全套轻柔按摩技巧,新手护理也能上手
  • 信锐工业安全方案深度解析:从东西向流量封堵到一机一密码,构筑车间网络的12道防线
  • 以解压缩的方式安装配置MinGW
  • 计算机毕业设计之基于Vue+Spring Boot的乡村儿童爱心帮扶平台设计与实现
  • HarmonyOS 6.1 新能力实战:用“双镜记忆相机”把照片、地点与人重新连起来
  • 影刀RPA API调用的重试退避与超时策略
  • ResearchStudio-Reel: 为学术论文一键生成海报、视频和博客
  • 第 7 篇:Git 远程仓库:clone、push、pull、ignore 和 tag
  • 轻量服务器+OpenClaw:开箱即用的机器人部署方案
  • 卡特加特的商业模式是怎么样的?它的护城河和竞争壁垒在哪里?
  • 佛山商家如何选获客软件?美诚AI适合预算有限团队
  • 信创内网IM替代,为什么决不是“换一个聊天软件”那么简单
  • PRD写作的工程化方法:从模糊需求到可验证规格的完整路径
  • 【计算机Java毕业设计案例】基于 SpringBoot 的招聘面试流程管理系统的设计与实现 基于前后端分离的人才简历库管理系统(程序+文档+讲解+定制)