如何在Linux中配置系统的环境变量

轻伟吖_3866

轻伟吖_3866

2026-07-19

293人浏览

原创

/etc/profile 是最稳妥的全局配置方式,因其为可执行脚本,支持 export、变量展开(如 $PATH)和条件判断,而 /etc/environment 仅支持静态键值对,不解析变量,无法拼接路径。

如何在linux中配置系统的环境变量

直接改 /etc/profile 是最稳妥的全局配置方式,但必须用 root 权限,且要小心别覆盖原有值。

为什么优先选 /etc/profile 而不是 /etc/environment

/etc/environment 看起来更“系统级”,但它不支持变量展开(比如不能写 $PATH),也不能执行命令,纯静态键值对。而 /etc/profile 是 shell 启动时执行的脚本,能用 export、能拼接路径、能做条件判断——实际配置 Java 或 MySQL 这类需要追加路径的场景,它才是真能干活的。

常见错误现象:echo $PATH 里没看到新加的路径,但 cat /etc/environment 确实写了。这就是因为该文件根本不会解析 $PATH,你写的 PATH="/usr/local/bin:$PATH" 会被原样当字符串存进去,失效。

  • 只在登录 shell(如 SSH 登录、图形界面终端首次打开)时读取
  • 所有用户共享,适合部署 JDK、Maven、Node.js 全局工具链
  • 必须用 source /etc/profile 才能立即生效,否则得新开终端或重新登录

export PATH=$PATH:/new/path 的顺序和冒号分隔细节

PATH 是用冒号 : 拼接的字符串,顺序决定查找优先级:前面的路径先被搜索。把新路径放前面(export PATH=/new/path:$PATH),你的本地二进制就优先于系统同名命令;放后面(export PATH=$PATH:/new/path)则作为兜底。

漏掉 $PATH 是高频翻车点。写成 export PATH=/opt/jdk/bin 直接清空整个 PATH,之后连 ls、cd 都会报 command not found。

  • 永远用 $PATH(带美元符)引用原值,不是 PATH
  • 路径末尾不要加斜杠,/opt/jdk/bin/ 和 /opt/jdk/bin 在某些 shell 下行为不一致
  • 避免空格:路径含空格必须用引号包裹,但最好压根别用带空格的路径

用户级配置该动 ~/.bashrc 还是 ~/.bash_profile

大多数桌面环境开终端走的是 non-login shell,只读 ~/.bashrc;SSH 登录或虚拟控制台登录才走 login shell,读 ~/.bash_profile。所以只改一个容易漏生效。

Linux Security Scanner
Linux Security Scanner

Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...

下载

标准做法是在 ~/.bash_profile 末尾加一句:source ~/.bashrc,然后把所有 export 都写进 ~/.bashrc。这样无论哪种方式启动终端,最终都加载同一份配置。

  • 如果 ~/.bash_profile 不存在,新建即可,不必强求用 ~/.profile
  • ~/.bashrc 里不要写交互式命令(比如 echo "hello"),它可能被非交互式 shell(如脚本)source,导致输出污染
  • 改完立刻验证:source ~/.bashrc && echo $PATH,别等重启

JAVA_HOME 和 CLASSPATH 这类变量要不要配

现代 JDK(8u202+)和主流构建工具(Maven、Gradle)基本不依赖 CLASSPATH,硬配反而容易引发类冲突。除非你跑老项目或用 java -cp 手动指定,否则跳过 CLASSPATH 更安全。

JAVA_HOME 仍有价值:Tomcat、IntelliJ、某些 Shell 脚本靠它定位 JDK。但注意——它只要指向 JDK 根目录(如 /usr/lib/jvm/java-17-openjdk-amd64),不要带 /bin;且必须在 PATH 之前设置,否则 export PATH=$JAVA_HOME/bin:$PATH 会失败。

  • JAVA_HOME 值里不能有符号链接,用 readlink -f 解析真实路径再赋值
  • 设了 JAVA_HOME 就别再单独往 PATH 加 javac 路径,统一用 $JAVA_HOME/bin
  • 多个 JDK 共存时,用 update-alternatives --config java 切换比手动改环境变量更可靠

真正麻烦的从来不是写那几行 export,而是改完后忘记 source,或者 PATH 里混进了不可访问的路径导致 shell 启动变慢——每次打开终端卡两秒,八成是某个 export PATH=xxx:$PATH 里的 xxx 目录权限不对或已删除。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux 环境变量

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4430

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3733

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

3013

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

7470

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

7102

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

4033

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3525

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3779

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习