Skip to content

环境变量

什么是环境变量?

环境变量是操作系统中存储配置信息的动态值,它们影响程序的行为和系统的运行方式。

查看环境变量

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_proxy

Shell 变量 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

小结

本章介绍了环境变量:

  • 查看变量envprintenvecho
  • 设置变量export、配置文件
  • PATH 变量:命令搜索路径
  • 配置文件~/.bashrc/etc/environment

环境变量是配置系统和应用程序的重要方式。


上一章:Shell 脚本基础

下一章:实战案例