环境变量是操作系统或应用程序运行时的动态值,可以影响进程的行为。在Linux中,环境变量通常用于定义用户工作环境、应用程序配置和系统行为。
/etc/profile
- 系统全局环境变量和启动程序/etc/bash.bashrc
- 系统级的bash shell环境变量/etc/environment
- 系统范围的环境变量设置~/.bash_profile
或 ~/.profile
- 用户登录时执行~/.bashrc
- 每次打开新的bash shell时执行~/.bash_logout
- 用户退出shell时执行export VARIABLE_NAME=value
# 编辑配置文件
vim ~/.bashrc # 或 ~/.bash_profile, ~/.profile
# 添加环境变量
export PATH=$PATH:/your/custom/path
export JAVA_HOME=/path/to/java
# 使配置立即生效
source ~/.bashrc
sudo vim /etc/profile
# 添加环境变量
export GLOBAL_VAR=value
# 使配置生效
source /etc/profile
sudo vim /etc/environment
# 直接添加变量(不需要export)
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
可以在程序启动脚本中设置环境变量:
#!/bin/bash
export APP_HOME=/opt/myapp
/path/to/application
变量名 | 用途描述 |
---|---|
PATH | 可执行程序的搜索路径 |
HOME | 当前用户的主目录 |
USER | 当前登录的用户名 |
SHELL | 当前使用的shell路径 |
LANG | 系统语言和字符集设置 |
PWD | 当前工作目录 |
EDITOR | 默认文本编辑器 |
PS1 | 命令行提示符格式 |
LD_LIBRARY_PATH | 动态链接库的搜索路径 |
JAVA_HOME | Java安装路径 |
CLASSPATH | Java类文件搜索路径 |
env
# 或
printenv
echo $PATH
# 或
printenv PATH
unset VARIABLE_NAME
source
命令使其生效。/etc/profile
→ ~/.bash_profile
→ ~/.bashrc
→ /etc/bash.bashrc
~/.bashrc
和/etc/bash.bashrc
~/.profile
修改PATH变量时,通常使用$PATH
保留原有路径:
export PATH=$PATH:/new/path
多个路径用冒号:
分隔
环境变量名通常大写,但不是强制的
修改全局配置文件可能影响所有用户,需谨慎操作
某些服务(如cron、systemd)可能有自己的环境变量加载机制
VAR=value command
if [ -z "$MY_VAR" ]; then
echo "MY_VAR is not set"
fi
# 如果VAR未设置,则使用default_value
echo ${VAR:-default_value}
#!/bin/bash
# 保留调用者的环境变量
source script.sh
# 或
. script.sh
通过合理配置环境变量,可以大大提高Linux系统的使用效率和开发体验。