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 设置方式略有差异,需按具体终端类型调整。
相关推荐
有时.不昰沉默17 分钟前
ubuntu 20.04 启动直接进入 tty1,而非 图形界面
linux·运维·ubuntu·tty1
济61721 分钟前
linux 系统移植(第七期)----U-Boot 图形化配置--添加自定义菜单-- Ubuntu20.04
linux·运维·服务器
松涛和鸣24 分钟前
DAY56 ARM Cortex-A Bare Metal
linux·服务器·c语言·开发语言·arm开发·数据库
星陨7727 分钟前
OpenStack私有云平台API接口练习
linux·运维·网络·openstack
别再下雨辽32 分钟前
开发板通过 VSCode Remote-SSH 反向转发复用 PC 代理排障总结
linux·ide·笔记·vscode·ssh
Kratzdisteln43 分钟前
【Linux】Docker容器中快速部署VNC远程桌面环境
linux·运维·docker
轻蓝雨1 小时前
树莓派4B安装ubuntu server后再访问GPIO
linux·运维·ubuntu
宇宙帅猴1 小时前
Ubuntu网络问题解决方案
linux·网络·ubuntu
栈低来信1 小时前
klist链表
linux·数据结构·链表
一个平凡而乐于分享的小比特1 小时前
Linux动态库与静态库技术详解
linux·动态库·静态库