loading

Linux 环境变量的添加与查看详解

  • Home
  • Blog
  • Linux 环境变量的添加与查看详解

Linux 环境变量的添加与查看详解

Linux 环境变量的添加与查看详解

1. 什么是环境变量

环境变量(Environment Variable)是操作系统在运行时为进程提供的一个动态变量集合。它们通常包含一些配置信息,例如:

可执行文件搜索路径(PATH)

用户信息(USER, HOME, SHELL)

本地化设置(LANG)

编译器、运行时相关配置(如 JAVA_HOME, PYTHONPATH)

在 Linux 中,环境变量一般由 shell (例如 bash, zsh)管理,并会传递给子进程。

2. 查看环境变量

2.1 常用查看命令

printenv

用于打印当前会话的环境变量:

bash

复制代码

printenv

printenv PATH # 查看指定变量

env

不带参数时可以显示所有环境变量:

bash

复制代码

env

env | grep PATH

echo 与 $ 引用

使用 $变量名 来查看具体值:

bash

复制代码

echo $HOME

echo $PATH

set

可查看当前 shell 中的所有变量(包括 shell 变量和环境变量),通常输出很多内容:

bash

复制代码

set

3. 添加环境变量

3.1 临时添加(仅在当前shell会话有效)

bash

复制代码

export 变量名=值

例子:

bash

复制代码

export PATH=$PATH:/opt/myprogram/bin

临时变量有效时间:直到退出当前终端。

临时变量不会影响其他已打开的终端,也不会在重新登录后保留。

3.2 永久添加(登录脚本)

要让环境变量在每次登录时自动生效,可以将其写入用户的 shell 配置文件:

~/.bashrc(交互式、非登录 shell)

~/.bash_profile 或 ~/.profile(登录 shell)

例:

bash

复制代码

# 在 ~/.bashrc 中添加

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk

export PATH=$PATH:$JAVA_HOME/bin

保存后执行:

bash

复制代码

source ~/.bashrc

即可立即生效。

3.3 系统级环境变量

如果需要给系统上所有用户添加变量,可以修改:

/etc/environment(简单键值对,不支持 shell 语法)

/etc/profile 或 /etc/bash.bashrc(支持 export)

修改后需要重新登录,或者运行 source 文件路径。

4. 删除环境变量

4.1 临时删除

bash

复制代码

unset 变量名

例:

bash

复制代码

unset TEMP_VAR

4.2 永久删除

删除配置文件中的相应定义行,然后重新登录或 source 文件。

5. 常见用途与环境变量示例

PATH

影响可执行文件的搜索路径。

HOME

当前用户的家目录路径。

*LANG / LC_ALL / LC_ **

控制程序的语言与本地化。

SHELL

用户默认 shell 类型。

JAVA_HOME / PYTHONPATH

用于指定编译器或解释器的位置。

LD_LIBRARY_PATH

动态链接库搜索路径。

6. 其他终端的处理方法

6.1 zsh

在 zsh 中添加永久环境变量可修改 ~/.zshrc:

bash

复制代码

export PATH=$PATH:/opt/tools/bin

然后运行:

bash

复制代码

source ~/.zshrc

6.2 fish shell

fish 不直接使用 export,而是:

fish

复制代码

set -x PATH $PATH /opt/tools/bin

若希望永久保存:

fish

复制代码

set -Ux PATH $PATH /opt/tools/bin

6.3 控制多个终端会话中的变量

如果希望所有终端共享统一变量,优先考虑修改系统全局配置文件或用户的 ~/.bashrc / ~/.zshrc,并确保登录方式统一。

7. 总结

临时变量 :export name=value,仅当前终端有效。

永久变量 :写入 shell 配置文件(如 ~/.bashrc 或 /etc/profile)。

查看变量 :echo $VAR、printenv、env。

删除变量 :unset VAR。

不同 shell 设置方式略有差异,需按具体终端类型调整。