一、认识环境变量环境变量是以变量名值形式存储数据的键值对Shell依靠环境变量保存会话、系统运行相关信息程序、脚本可以快速读取内存中存储的数据。系统自带大量默认环境变量用来定义终端运行环境常见自带变量有HOME、PATH、PWD、PS1、UID等。系统环境变量统一使用大写命名方便和用户自定义变量区分。bash中环境变量分为两大类全局环境变量、局部环境变量二者生效范围存在明显区别。二、全局变量与局部变量区分实操2.1 全局环境变量全局变量对当前Shell以及所有子Shell进程都可见。查看全局变量命令env、printenv两条命令均可输出全部全局环境变量单独查看某一个变量可以使用printenv 变量名、env | grep 变量名使用echo $变量名也能打印变量值引用变量时必须添加美元符号$。全局变量可被子Shell继承执行bash生成子Shell子Shell内依旧可以读取HOME、PWD等系统全局变量父子进程共用同一套全局环境数据。2.2 局部环境变量局部变量仅能在创建它的当前Shell进程内使用子Shell无法读取。没有单独只查看局部变量的命令set命令可以输出当前进程所有变量包含局部、全局、自定义变量并按字母排序。2.3 自定义局部变量实操自定义局部变量语法规则变量名、等号、数值之间不能有空格字符串包含空格时使用英文单引号包裹完整内容自定义变量建议小写避免覆盖系统大写环境变量。实操流程错误示范my variableHello变量名带空格系统识别my为命令直接报错正确定义my_variableHello当前终端echo可正常输出输入bash进入子Shell执行echo $my_variable无输出证明局部变量无法传递给子进程exit退出子Shell回到父终端再次echo变量可以正常打印。2.4 自定义全局变量实操局部变量通过export命令导出后升级为全局变量所有子Shell均可读取。实操流程定义局部变量my_variableGlobal variableexport my_variable导出为全局bash进入子Shellecho能够正常读取变量子Shell内重新给变量赋值仅修改子进程内部数据exit回到父Shell变量依旧是原始值子进程修改不会影响父进程。2.5 删除自定义变量unset删除变量命令为unset 变量名操作变量时不能加$符号若写unset $my_variable会直接读取变量值执行删除操作无效。子Shell内unset变量仅作用于子进程退出后父Shell变量依旧存在。2.6 永久保存自定义全局变量临时export的变量关闭终端就会消失想要永久生效写入用户专属启动文件~/.bashrcvim ~/.bashrc打开配置文件文件末尾添加export my_variableHello World保存退出执行source ~/.bashrc刷新配置无需重启终端新开终端、创建多层子Shell变量均可通过env查询到。三、PATH环境变量详解PATH是系统核心全局环境变量存储一系列目录路径多个目录使用英文冒号分隔。我们输入外部命令时Shell会按PATH内目录顺序依次检索找到对应可执行程序运行。查看PATHecho $PATH或env检索PATH字段临时追加自定义目录export PATH$PATH:/自定义文件夹路径仅当前终端生效永久添加自定义目录编辑~/.bashrc写入PATH追加语句source刷新配置后永久生效。四、Shell启动配置文件登录Linux后bash会自动读取多份启动文件加载环境配置分为系统级文件与用户专属文件系统全局文件/etc/profile所有用户登录都会加载定义系统公共环境用户私有隐藏文件~/.bashrc、~/.profile、~/.bash_login、~/.bash_profile日常实操主要使用~/.bashrc每次开启新终端、子Shell都会自动加载文件内的变量、别名配置。注意文件内if判断语法必须if与fi成对缺失fi会出现语法报错终端启动异常补全fi后执行source即可修复。五、Shell数组变量数组可以一次性存储多个数据bash仅支持一维数组括号()定义数组元素空格分隔下标从0开始。定义数组my_test(one two three)读取单个元素${my_test[下标]}读取全部数组内容${my_test[*]}修改指定下标数据my_test[1]five删除单个元素unset my_test[1]删除整个数组unset my_test。数组默认属于局部变量无法完整导出为全局变量env命令查询不到数组信息。六、完整知识总结变量分类全局变量env可查看子Shell共享局部变量仅当前终端有效子进程无法读取set可查看全部变量自定义变量赋值等号两侧不能空格含空格字符串用英文单引号包裹export导出局部变量为全局unset删除变量不加$临时变量重启终端失效写入~/.bashrc实现永久环境配置PATH控制命令检索目录可临时、永久追加自定义程序文件夹~/.bashrc为用户终端启动文件统一配置全局变量、别名脚本if语句必须搭配fiShell一维数组存储多组数据支持下标取值、修改、删除数组不属于全局环境变量。