环境变量
什么是环境变量?
环境变量是操作系统中存储配置信息的动态值,它们影响程序的行为和系统的运行方式。
查看环境变量
bash
# 查看所有环境变量
$ env
$ printenv
# 查看特定变量
$ echo $PATH
$ printenv PATH
# 使用 set 查看所有变量(包括 Shell 变量)
$ set常用环境变量
| 变量 | 说明 |
|---|---|
PATH | 可执行文件搜索路径 |
HOME | 用户家目录 |
USER | 当前用户名 |
SHELL | 默认 Shell |
PWD | 当前工作目录 |
OLDPWD | 上一个工作目录 |
LANG | 语言设置 |
TERM | 终端类型 |
EDITOR | 默认编辑器 |
HOSTNAME | 主机名 |
PS1 | 命令提示符 |
LD_LIBRARY_PATH | 共享库搜索路径 |
设置环境变量
临时设置
bash
# 设置变量(仅当前 Shell)
$ export MYVAR="value"
# 设置变量并运行命令
$ MYVAR="value" command
# 取消变量
$ unset MYVAR永久设置
用户级配置
编辑 ~/.bashrc 或 ~/.profile:
bash
# ~/.bashrc
export MYVAR="value"
export PATH="$PATH:/new/path"
export EDITOR="vim"bash
# 使配置生效
$ source ~/.bashrc系统级配置
bash
# /etc/environment(推荐)
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
LANG="en_US.UTF-8"
# /etc/profile(所有用户登录时)
export JAVA_HOME="/usr/lib/jvm/java-11"
# /etc/profile.d/*.sh
# 创建独立的配置文件
$ sudo vim /etc/profile.d/myapp.sh
export MYAPP_HOME="/opt/myapp"PATH 变量
PATH 是最重要的环境变量之一,定义了 Shell 搜索命令的目录。
查看 PATH
bash
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin
# 每行显示一个路径
$ echo $PATH | tr ':' '\n'修改 PATH
bash
# 添加到末尾
export PATH="$PATH:/new/path"
# 添加到开头(优先搜索)
export PATH="/new/path:$PATH"
# 永久添加(在 ~/.bashrc 中)
export PATH="$PATH:$HOME/bin"
export PATH="$PATH:$HOME/.local/bin"PATH 搜索顺序
bash
# 查看命令位置
$ which python
/usr/bin/python
# 查看所有匹配
$ which -a python
/usr/bin/python
/usr/local/bin/python语言和区域设置
bash
# 查看当前设置
$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
...
# 设置语言
export LANG="zh_CN.UTF-8"
# 设置所有区域
export LC_ALL="en_US.UTF-8"
# 查看可用语言
$ locale -a常用配置示例
开发环境
bash
# ~/.bashrc
# Java
export JAVA_HOME="/usr/lib/jvm/java-17"
export PATH="$PATH:$JAVA_HOME/bin"
# Go
export GOPATH="$HOME/go"
export PATH="$PATH:$GOPATH/bin"
# Node.js
export NVM_DIR="$HOME/.nvm"
# Python
export PYTHONPATH="$HOME/python/lib"
# 编辑器
export EDITOR="vim"
export VISUAL="vim"代理设置
bash
export http_proxy="http://proxy.example.com:8080"
export https_proxy="http://proxy.example.com:8080"
export no_proxy="localhost,127.0.0.1,.example.com"
# 取消代理
unset http_proxy https_proxy no_proxyShell 变量 vs 环境变量
bash
# Shell 变量(仅当前 Shell)
myvar="value"
# 环境变量(传递给子进程)
export myvar="value"
# 验证
$ myvar="shell_var"
$ bash -c 'echo $myvar' # 空
$ export myvar="env_var"
$ bash -c 'echo $myvar' # env_var小结
本章介绍了环境变量:
- 查看变量:
env、printenv、echo - 设置变量:
export、配置文件 - PATH 变量:命令搜索路径
- 配置文件:
~/.bashrc、/etc/environment
环境变量是配置系统和应用程序的重要方式。
上一章:Shell 脚本基础
下一章:实战案例