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 设置方式略有差异,需按具体终端类型调整。
相关推荐
@noNo20 小时前
VMware Workstation 虚拟机 Ubuntu 24.04 主机与虚拟机之间无法复制粘贴
linux·运维·ubuntu
wdfk_prog21 小时前
[Linux]学习笔记系列 -- [fs]initramfs
linux·笔记·学习
Violet_YSWY21 小时前
CentOS 的 DVD 镜像 和 Minimal 镜像 的区别
linux·运维·centos
霜!!21 小时前
openssl升级
linux·运维·服务器
Truman楚门21 小时前
Page cache
linux·内存管理
mzhan01721 小时前
[晕事]今天做了件晕事98,把openssl-libs 强制删掉了
linux·网络·晕事·openssl-libs
知识分享小能手21 小时前
Ubuntu入门学习教程,从入门到精通, Ubuntu 22.04 的软件包管理 —— 全面详解(9)
linux·学习·ubuntu
爱学大树锯21 小时前
421 · 简化路径
linux·运维·服务器
wadesir21 小时前
Debian集群容量规划(从零开始掌握Linux服务器集群资源评估与优化)
linux·服务器·debian
GHL2842710901 天前
redis编译调试(linux)
linux·数据库·redis