环境变量和shell变量

cn_ryh 发布于 6 天前 64 次阅读


AI 摘要

Linux环境中的变量体系多种多样,从作用域到生命周期再到用户权限都有所区别。不仅有全局可见的环境变量如`PATH`,还有仅在当前会话有效的Shell变量;有临时变量随Shell进程消亡,也有需写入配置文件的持久性变量。同时,变量操作技巧也多样,包括定义、导出、查看、删除等基础操作,以及只读锁、数组、环境变量注入等高级技巧。更有脚本参数如 `\$0`、`\$#`和`\$?`等特殊变量,助力编写更灵活、高效的脚本。在Linux世界里,变量扮演着连接各部分的关键角色,蕴藏着丰富的可能性。

Linux变量

一、变量体系

1.1 变量分类

1. 按作用域划分  

  • 环境变量:全局可见的配置参数,如 PATH(命令搜索路径)。
  • Shell变量:局部作用域的临时存储,仅在当前 Shell 会话有效。

2. 按生命周期划分  

  • 临时变量export TEMP_VAR="test"(随 Shell 进程终止而消亡)
  • 永久变量:写入 ~/.bashrc/etc/profile 的持久化配置

3. 按用户权限划分

  • 用户级变量~/.bash_profile 中的个性化设置
  • 系统级变量/etc/environment 中的全局配置

1.2 变量类型表

变量类型典型代表作用场景生命周期
环境变量PATH, HOME系统全局配置永久/临时
位置参数变量 $1, $2脚本参数传递脚本执行期间
预定义变量$$, $?进程管理/状态获取实时生效
用户自定义变量MY_APP_CONFIG应用配置管理可配置

二、变量操作

2.1 基础操作四式

# 定义变量(注意等号两侧无空格)
PYTHON_VER="3.9"

# 定义环境变量
export JAVA_HOME="/opt/jdk11"

# 查看变量值
echo ${PYTHON_VER}

# 删除变量
unset TEMP_CACHE

2.2 高阶操作秘籍

1. 只读防护锁

readonly API_KEY="sk-xxxx"

2. 数组

# 定义日志文件数组
log_files=("/var/log/syslog" "/var/log/nginx/access.log")

# 遍历处理
for file in "${log_files[@]}"; do
    gzip ${file}
done

3. 环境变量注入

在执行的命令前面加上变量定义,该变量只在该命令中作为环境变量生效。

DEBUG_MODE=1 python3 app.py  # 单次命令环境变量注入

三、特殊变量

3.1 脚本参数

变量符号 效果   应用场景 
$0脚本本体名称自检脚本
$#参数个数统计器参数合法性校验
$*参数聚合器(字符串模式)批量传递参数
$@参数分解器(数组模式)逐个处理参数
$?命令退出状态检测器错误处理流程控制
此作者没有提供个人介绍
最后更新于 2025-03-27