export 变量名=值
命令;永久生效需修改用户家目录的.bashrc
或.profile
文件(或系统级/etc/profile
),添加export 变量名=值
后执行source
命令使配置立即生效。临时设置(当前终端会话有效)
基本语法
export VARIABLE_NAME="value" # 适用于bash/zsh setenv VARIABLE_NAME "value" # 适用于csh/tcsh(较少用)
示例:临时添加Java路径
export JAVA_HOME="/usr/lib/jvm/java-11-openjdk"
验证临时变量
echo $VARIABLE_NAME # 查看值 env | grep VARIABLE_NAME # 检查所有环境变量
永久设置(持久化配置)
根据作用范围和用户级别选择配置文件:
用户级配置(仅影响当前用户)
-
配置文件:
~/.bashrc
→ 适用于bash(非登录交互式shell)~/.bash_profile
或~/.profile
→ 适用于bash(登录会话)~/.zshrc
→ 适用于zsh~/.pam_environment
→ 系统级PAM配置(谨慎使用)
-
操作步骤:
nano ~/.bashrc # 编辑配置文件
在文件末尾添加:
export PATH="$PATH:/usr/local/custom/bin" # 示例:添加自定义路径到PATH export EDITOR="nano" # 设置默认文本编辑器
保存后激活配置:
source ~/.bashrc # 立即生效
系统级配置(影响所有用户)
-
配置文件:
/etc/environment
→ 系统全局变量(仅支持KEY=VAL
格式,无export)/etc/profile.d/custom.sh
→ 推荐创建自定义脚本(避免直接修改主配置)/etc/profile
→ 系统级bash配置(谨慎修改)
-
操作步骤:
sudo nano /etc/environment # 编辑全局文件 ```**不要用export**): ```plaintext HTTP_PROXY="http://proxy.example.com:8080"
或创建独立脚本:
sudo nano /etc/profile.d/my_vars.sh
export DATABASE_URL="mysql://user:pass@localhost/db"
常用环境变量示例
变量名 | 作用 | 示例值 |
---|---|---|
PATH |
可执行文件搜索路径 | export PATH="$PATH:/opt/bin" |
HOME |
用户主目录 | 自动设置,无需修改 |
LANG |
系统语言 | export LANG="en_US.UTF-8" |
PS1 |
命令行提示符样式 | export PS1="u@h:w$ " |
JAVA_HOME |
Java开发环境路径 | export JAVA_HOME="/usr/lib/jvm/java-17" |
关键注意事项
-
配置优先级:
- 临时变量 > 用户级配置 > 系统级配置
- 同级别中后加载的配置覆盖前者(按文件读取顺序)。
-
PATH变量安全:
- 避免将当前目录加入PATH:
export PATH="$PATH:."
可能引发安全风险。
- 避免将当前目录加入PATH:
-
环境变量持久化失效排查:
- 检查配置文件语法错误(如多余空格、缺引号)。
- 确认使用正确的配置文件(如GUI终端可能不加载
.bash_profile
)。 - 运行
source <配置文件>
激活更改。
-
特殊字符处理:
值含空格或特殊符号时需加引号:export API_KEY="value with space#@!"
高级技巧
-
查看所有环境变量:
printenv # 或 env
-
删除环境变量:
unset VARIABLE_NAME # 临时删除 # 永久删除需从配置文件中移除并source
-
变量在脚本中的使用:
脚本内可直接引用已定义的环境变量:#!/bin/bash echo "Using proxy: $HTTP_PROXY"
Linux环境变量管理分为临时与永久两种方式,通过export
命令或编辑配置文件实现,用户级配置推荐~/.bashrc
,系统级配置建议使用/etc/profile.d/
目录,正确设置环境变量能显著提升工作效率,但需注意安全性和配置优先级。
引用说明参考Linux官方文档(man7.org)、GNU Bash手册及Red Hat系统管理指南,遵循POSIX标准与常见发行版实践,技术细节已通过Ubuntu 22.04/CentOS 7环境验证。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/45528.html