shell 第 8 篇环境变量详解:设置、查询、删除与实战技巧

环境变量是 Shell 脚本和 Linux 操作中不可或缺的一环。无论是系统启动、软件运行,还是日常命令执行,它们都在背后“默默工作”。本节将带你全面掌握环境变量的使用方式和实战技巧。下面操作以ubuntu为例。

一、什么是环境变量?

环境变量是系统级的变量,它们影响 Shell 的行为和正在运行的进程。

  • 类似于“操作系统的全局设置”。
  • 用于保存如路径信息、用户名、语言设置、历史记录等。

二、设置环境变量:export 命令

基本语法

export 变量名=

配置 Java 环境变量

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH

这个变量将被所有子 Shell 继承。

👆 这个命令将 JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/bin 目录添加到 PATH 环境变量中。

小提示

  • export 设置的变量对当前 shell 和子 shell有效。
  • 若只使用 变量名=值,则仅在当前 shell 有效,子进程无法继承。

三、查看环境变量

方式一:使用 echo

#查看 PATH 环境变量
echo $PATH
#查看当前登录用户的主目录
echo $HOME

方式二:使用 envprintenv

env
printenv

默认显示所有当前 shell 的环境变量,内容太多不截图说明了,自己可以看一下

方式三:set(显示所有变量,包括函数和 shell 局部变量)

set

四、删除环境变量:unset

基本语法

unset 变量名

变量将从当前 shell 中被移除。

📌 注意unset 不能删除只读变量(如 PATH、HOME)。

五、常见系统环境变量及其作用

变量名作用说明示例
PATH系统查找可执行命令的路径/usr/local/bin:/usr/bin:/bin
HOME当前用户的主目录路径/home/username
USER当前用户名root
SHELL当前使用的 shell 路径/bin/bash
LANG当前语言编码zh_CN.UTF-8
PWD当前工作目录/home/user/project
OLDPWD上一个工作目录/home/user
HOSTNAME主机名ubuntu-server
EDITOR默认文本编辑器vim
HISTSIZE历史命令条数1000

六、环境变量与 Shell 脚本的结合

示例脚本一:动态设置变量并使用

#!/bin/bash
export LOG_DIR="/var/log/myapp"
mkdir -p $LOG_DIR
echo "日志目录已创建在:$LOG_DIR"

再说一次这里设置 $LOG_DIR 变量只对当前 shell 和子 shell 有效
执行上述脚本,你会发现 echo $LOG_DIR啥也没有输出,因为终端执行的shell是当前脚本的父 shell,所以不生效

使用source命令临时的在当前 Shell 会话中生效,关闭终端后失效


unset 删除变量也是这个原理

现在是不是明白了许多呢!!!😂

示例脚本二:根据用户切换不同配置

判断当前用户是否为 root,分别设置了一个环境变量 CONFIG_PATH,指向不同的配置文件路径,便于程序根据用户身份加载对应的配置

#!/bin/bash

if [ "$USER" = "root" ]; then
  export CONFIG_PATH="/etc/myapp/config_root"
else
  export CONFIG_PATH="$HOME/.myapp/config"
fi
# 自动创建配置目录
mkdir -p "$(dirname "$CONFIG_PATH")"
echo "配置文件路径为:$CONFIG_PATH"

切换不同的用户来测试

七、环境变量使用中的注意事项

注意事项说明
$ 是引用变量的标志使用 $VAR 来读取变量值
export 会让变量在子进程中有效不使用 export 的变量无法被脚本继承
环境变量对系统行为影响巨大修改 PATH 可能导致命令无法执行
写脚本时尽量不要硬编码路径使用变量更灵活、可复用性更强
环境变量区分大小写PATHpath

八、什么时候需要用环境变量?

✅ 常见使用场景如下:

场景用法
修改默认命令路径修改 PATH 变量
自动化脚本配置参数脚本读取环境变量作为输入
用户个性化配置~/.bashrc~/.profile 中设置变量
软件安装后增加新路径添加到 PATH
Dockerfile 或 CI/CD 中传递变量使用 ENVexport

九、与配置文件的关系

常见环境变量配置文件:

文件生效范围说明
~/.bashrc当前用户,每次启动 shell 时适合 export 一些临时变量
~/.profile / ~/.bash_profile当前用户登录时生效适合设置用户级变量
/etc/profile所有用户登录 shell 时生效系统级变量配置文件
/etc/environment全局环境变量配置文件不支持复杂语法,适合写静态变量

关键点

  • 环境变量通过 export 设置,用 unset 删除。
  • 变量作用范围依赖于是否使用了 export
  • 在脚本中使用变量比硬编码路径更灵活。
  • 合理设置 PATH 可以提高开发效率,避免执行失败。
  • 常见环境变量如 PATHHOMEUSER 非常重要,了解其意义有助于系统调试与自动化开发。

如果你看到这里,说明你真的很认真地在学习 Linux Shell 编程👏。

本系列内容将持续更新,包括脚本实战、渗透自动化、系统管理技巧等干货,适合:

  • ✅ Linux 初学者
  • ✅ 运维 / 安全从业者
  • ✅ 编程爱好者与脚本自动化爱好者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安全日记pro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值