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

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

1. 什么是环境变量

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

  • 可执行文件搜索路径(PATH
  • 用户信息(USER, HOME, SHELL
  • 本地化设置(LANG
  • 编译器、运行时相关配置(如 JAVA_HOME, PYTHONPATH

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


2. 查看环境变量

2.1 常用查看命令

  1. printenv

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

    bash 复制代码
    printenv
    printenv PATH  # 查看指定变量
  2. env

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

    bash 复制代码
    env
    env | grep PATH
  3. echo$ 引用

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

    bash 复制代码
    echo $HOME
    echo $PATH
  4. 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 $VARprintenvenv
  • 删除变量unset VAR
  • 不同 shell 设置方式略有差异,需按具体终端类型调整。
相关推荐
Web3探索者3 小时前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo5 小时前
Linux系统中网线与USB网络共享冲突
linux
Sokach10151 天前
Linux Shell 脚本从零到能用:一个新手的一天学习总结
linux
AlfredZhao2 天前
Docker 容器时区不对,`timedatectl` 不存在怎么办?
linux·timezone
zzzzzz3103 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode3 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
cup114 天前
[技术复盘] Windows Python 打包实战:Nuitka 环境踩坑总结与 CI 自动化构建全指南
python·ai·环境变量·ci·nuitka·skill
A小辣椒5 天前
TShark:Wireshark CLI 功能
linux
A小辣椒5 天前
TShark:基础知识
linux
AlfredZhao5 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci