一、全局环境变量、局部环境变量
- 局部(本地)环境变量
生效范围:仅限当前正在运行的Shell会话,新开子Shell、别的终端窗口都读取不到这个变量
创建示例:
bash
local_var=“我是局部变量”
echo $local_var
bash # 进入子shell
echo $local_var # 空白无输出,子进程拿不到父shell的普通局部变量
生命周期:关闭当前终端/Shell会话,变量直接销毁,不会自动持久保存
- 全局(导出型)环境变量
创建方式:局部变量搭配 export 命令导出升级为全局变量
bash
global_var=“全局测试内容”
export global_var
生效规则:能向下传递给由当前Shell启动的所有子Shell、子进程;反过来子Shell修改、重新export该变量,无法改动父Shell里原始数值(进程内存互相隔离,子进程数据不会向上回写)
局限:仅本次终端会话有效,系统重启、重开终端后变量会消失,想要永久生效需要写入Shell启动文件
二、PATH环境变量(命令检索路径)
核心作用
Shell执行一条普通命令(比如 ls 、 python )时,不会漫无目的全盘搜程序,会按PATH里冒号 : 分隔的目录顺序挨个查找对应可执行文件,找到就运行,全部目录检索不到就报「未找到命令」。
查看PATH
bash
echo $PATH
示例输出:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
实用场景举例
自己编译的程序放在 /opt/my_app/bin ,直接输程序名系统识别失败;把目录追加进PATH后就能直接调用:
bash
export PATH=$PATH:/opt/my_app/bin
易错提醒
不要直接写 PATH=/opt/my_app/bin ,会清空系统原有检索目录,内置 ls 、 cd 等基础命令会暂时失效。
三、bash启动文件 ~/.bashrc(会话持久化配置)
- 文件定位
- 代表当前登录用户的家目录, ~/.bashrc 是单用户专属、交互式Shell启动时自动读取执行的脚本文件(文件名开头 . 代表隐藏文件)。
功能
- 终端新开一个bash会话(打开SSH窗口、本地终端),bash会自动加载 .bashrc 内部代码
- 把 export 环境变量 、自定义别名 alias 、PATH追加规则写进 .bashrc ,每次开终端会自动完成配置,摆脱「临时export重启失效」的问题
实操步骤
- 用文本编辑器打开文件: vim ~/.bashrc ,末尾补充配置:
bash
export my_variable=“持久化的全局变量”
- 加载改动让本次终端立刻生效(不用重启终端):
bash
source ~/.bashrc
- 新开终端测试,变量可以正常读取,达成永久配置效果
补充区分:系统级配置 /etc/bashrc 是对系统全部用户生效; .bashrc 仅针对当前登录用户
四、Shell数组变量使用
普通变量单次只能存1份数据,数组可以在一个变量名下批量存放多条数据,bash下标从0开始计数。
- 数组创建两种写法
bash
写法1:括号空格分隔赋值
arr=(“苹果” “香蕉” “橙子”)
写法2:按下标逐个赋值
fruit[0]=“西瓜”
fruit[1]=“葡萄”
- 读取数据
bash
echo ${arr[0]} # 取出第1个元素:苹果
echo ${arr[@]} # 一次性输出数组所有元素
echo ${#arr[@]} # 获取数组内元素总个数(结果为3)
- 遍历数组(循环打印全部内容)
bash
for item in ${arr[@]}
do
echo $item
done
- 修改、删除元素
bash
arr[1]=“蜜桃” # 把下标1的香蕉替换成蜜桃
unset arr[2] # 删除下标2的橙子
unset arr # 清空整个数组
示例截图: