课堂笔记
一、什么是环境变量
定义:在程序外部设置的变量,由操作系统或 Shell 内置功能管理,以“名称=值”对形式存在(如 HOME=/home/zhangzy)。
作用:存储 Shell 会话和工作环境信息,方便程序和脚本访问,是持久存储数据的一种简便方法。
命名惯例:系统环境变量通常全大写;用户自定义变量建议用小写,避免覆盖系统变量。
二、环境变量的分类
类型 可见范围
全局环境变量 对当前 Shell 及其所有子 Shell 可见
局部环境变量 仅对创建它的当前 Shell 可见
三、查看环境变量的命令
命令 用途
env 显示所有全局环境变量
printenv 显示所有全局变量,或指定单个变量的值(如 printenv HOME)
echo $变量名 显示指定变量的值(需加 $)
set 显示当前 Shell 的所有变量(包括局部、全局、用户自定义),按字母排序
注意:env 不能直接显示单个变量,推荐用 printenv 或 echo。
四、创建用户自定义变量

  1. 局部变量
    语法:变量名=值(等号两边不能有空格)
    字符串含空格时,用单引号括起来,例如:my_var=‘Hello World’
    只在当前 Shell 生效,子 Shell 无法继承。
  2. 全局变量
    步骤:先创建局部变量,再用 export 导出,例如:
    bash
    my_var=“Global”
    export my_var
    导出后,子 Shell 可见;在子 Shell 中修改变量值不影响父 Shell(除非再次 export 并在子 Shell 中覆盖,但父 Shell 仍保持原值)。
    五、删除环境变量
    使用 unset 命令,不要加 ,例如:unsetmyvar删除全局变量时,若在子Shell中执行,只影响该子Shell,父Shell不受影响。六、默认的Shell环境变量Bourne继承变量:HOME、PATH、PS1(主提示符)、PS2(次提示符)、IFS、MAIL等。Bash特有变量:BASH、BASHALIASES、EUID、GROUPS、HOSTNAME、PWD、RANDOM、UID等。七、PATH环境变量作用:定义Shell查找可执行命令的目录列表,用冒号分隔。临时添加目录:PATH=,例如:unset my_var 删除全局变量时,若在子 Shell 中执行,只影响该子 Shell,父 Shell 不受影响。 六、默认的 Shell 环境变量 Bourne 继承变量:HOME、PATH、PS1(主提示符)、PS2(次提示符)、IFS、MAIL 等。 Bash 特有变量:BASH、BASH_ALIASES、EUID、GROUPS、HOSTNAME、PWD、RANDOM、UID 等。 七、PATH 环境变量 作用:定义 Shell 查找可执行命令的目录列表,用冒号分隔。 临时添加目录:PATH=,例如:unsetmyvar删除全局变量时,若在子Shell中执行,只影响该子Shell,父Shell不受影响。六、默认的Shell环境变量Bourne继承变量:HOMEPATHPS1(主提示符)、PS2(次提示符)、IFSMAIL等。Bash特有变量:BASHBASHALIASESEUIDGROUPSHOSTNAMEPWDRANDOMUID等。七、PATH环境变量作用:定义Shell查找可执行命令的目录列表,用冒号分隔。临时添加目录:PATH=PATH:/新目录路径(仅在当前会话有效,重启失效)。
    永久生效:需将上述命令写入启动文件(如 ~/.bashrc 或 ~/.profile)。
    八、系统环境变量启动文件(登录 Shell 读取顺序)
    系统级:
    /etc/profile —— 主启动文件,所有用户登录时执行。
    /etc/bash.bashrc —— 通常包含系统级别名和函数。
    /etc/profile.d/.sh —— 该目录下的所有 .sh 文件会被 /etc/profile 遍历执行。
    用户级(按顺序查找,只执行第一个找到的):
    ~/.bash_profile
    ~/.bash_login
    ~/.profile
    以上文件通常会调用 ~/.bashrc,其中定义了用户专属别名、函数和 PATH 等。
    九、数组变量
    定义:数组名=(值1 值2 值3)
    引用单个元素:数组名[索引](索引从0开始)引用所有元素:{数组名[索引]}(索引从 0 开始) 引用所有元素:数组名[索引](索引从0开始)引用所有元素:{数组名[
    ]}
    修改元素:数组名[索引]=新值
    删除元素:unset 数组名[索引](索引位置保留为空)
    删除整个数组:unset 数组名
    十、关键注意事项
    引用变量时加 $(如 echo $VAR);操作变量(赋值、删除)时不加 $。
    子 Shell 中的变量修改不会影响父 Shell(除非使用 export 但父 Shell 仍保留原始值)。
    练习一
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    练习二

练习三
在这里插入图片描述
练习四
在这里插入图片描述

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐