news 2026/9/3 0:35:52

环境变量配置:让命令和程序正确运行

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
环境变量配置:让命令和程序正确运行

环境变量配置:让命令和程序正确运行

装了Java但java命令找不到?设了变量重启就没了?

今天聊聊Linux环境变量的配置。

什么是环境变量

环境变量就是系统里的一些配置信息,比如:

  • PATH:系统去哪找可执行文件
  • JAVA_HOME:Java安装在哪
  • HOME:用户主目录

查看环境变量

# 查看所有环境变量env# 查看单个变量echo$PATHecho$JAVA_HOMEecho$HOME

临时设置(关闭终端就没了)

exportMY_VAR="hello"echo$MY_VAR

永久设置

环境变量要写到配置文件里才能永久生效。

用户级别(只对当前用户生效):

编辑~/.bashrc~/.bash_profile

vim~/.bashrc# 添加这行exportJAVA_HOME=/usr/lib/jvm/java-11exportPATH=$PATH:$JAVA_HOME/bin# 保存后使其生效source~/.bashrc

系统级别(对所有用户生效):

编辑/etc/profile或在/etc/profile.d/下创建文件:

sudovim/etc/profile.d/java.sh# 添加exportJAVA_HOME=/usr/lib/jvm/java-11exportPATH=$PATH:$JAVA_HOME/bin# 生效source/etc/profile

配置文件的区别

  • ~/.bashrc:每次打开终端都会执行
  • ~/.bash_profile:登录时执行一次
  • /etc/profile:系统级,所有用户登录时执行
  • /etc/environment:系统级环境变量

推荐:个人用~/.bashrc,系统级用/etc/profile.d/xxx.sh

常见场景

场景1:配置Java环境

vim~/.bashrc# 添加exportJAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64exportPATH=$PATH:$JAVA_HOME/binsource~/.bashrc# 验证java-version

场景2:配置Maven

exportMAVEN_HOME=/opt/mavenexportPATH=$PATH:$MAVEN_HOME/bin

场景3:配置Go

exportGOROOT=/usr/local/goexportGOPATH=$HOME/goexportPATH=$PATH:$GOROOT/bin:$GOPATH/bin

场景4:配置Node.js

exportNVM_DIR="$HOME/.nvm"[-s"$NVM_DIR/nvm.sh"]&&\."$NVM_DIR/nvm.sh"

PATH变量详解

PATH变量告诉系统去哪找命令:

echo$PATH# /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

多个路径用冒号分隔,系统按顺序查找。

添加新路径:

# 追加到末尾exportPATH=$PATH:/new/path# 添加到开头(优先级更高)exportPATH=/new/path:$PATH

常见问题

Q:配置了但不生效?

source~/.bashrc# 或者重新登录

Q:命令找不到?

# 检查命令在哪whichjavawhereisjava# 检查PATH里有没有echo$PATH|grepjava

Q:想删除某个环境变量?

unsetMY_VAR

从配置文件里删掉对应行,重新source。

远程服务器配置

不同服务器环境变量要统一,我用星空组网连起来后批量同步:

# 把本地配置同步到所有服务器foripin10.26.1.{10..15};doscp~/.bashrc root@$ip:~/.bashrcsshroot@$ip"source ~/.bashrc"done

速查表

操作命令
查看所有变量env
查看单个变量echo $变量名
临时设置export 变量名=值
永久设置(用户)编辑~/.bashrc
永久设置(系统)编辑/etc/profile
使配置生效source ~/.bashrc
删除变量unset 变量名

小结

环境变量配置核心:

  1. 临时:export 变量名=值
  2. 永久:写入~/.bashrc
  3. 生效:source ~/.bashrc
  4. PATH追加:export PATH=$PATH:/新路径

记住这几点就够日常使用了。

有问题评论区交流~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 19:52:07

【.NET性能调优核心技能】:深入理解C#内联数组的底层机制

第一章:C#内联数组的性能优势与适用场景C#中的内联数组(Inline Arrays)是.NET 7引入的一项重要语言特性,允许开发者在结构体中声明固定长度的数组,并将其直接嵌入到结构体内存布局中。这一机制避免了堆内存分配和引用间…

作者头像 李华
网站建设 2026/9/2 9:57:25

自媒体创作者福音:低成本制作高质量数字人解说视频

自媒体创作者福音:低成本制作高质量数字人解说视频 在短视频和知识内容爆发的时代,每天都有成千上万的创作者为一条“爆款”视频绞尽脑汁。但你有没有想过,未来的内容生产可能不再需要复杂的拍摄流程、昂贵的设备,甚至不需要真人出…

作者头像 李华
网站建设 2026/9/2 20:40:41

蔚来汽车产品发布会:辅助真人主持完成多语种同传

蔚来汽车产品发布会:辅助真人主持完成多语种同传 在一场面向全球直播的蔚来汽车新品发布会上,观众可能并未察觉——当主持人用中文讲解新款车型的技术亮点时,屏幕一侧同步播放的英文、德文、日文版本视频中,“他”依然在开口说话…

作者头像 李华
网站建设 2026/9/2 20:39:17

让网页“舞动”的艺术:CSS3动画完全指南

引言:为什么你的网站需要动画? 想象一下,如果迪士尼电影只是一连串静止的画面切换,如果视频游戏没有流畅的动作反馈,如果手机应用只是冷冰冰的页面跳转——这样的数字体验该多么乏味!网页动画正是数字世界的…

作者头像 李华
网站建设 2026/9/2 21:23:29

【C#高级开发必修课】:掌握内联数组的4大应用场景与陷阱

第一章:C#内联数组的核心概念与语言支持C# 作为一门现代化的强类型编程语言,持续在性能敏感场景中引入低层级优化机制。内联数组(Inline Arrays)是 C# 12 引入的重要语言特性之一,允许开发者在结构体中声明固定长度的数…

作者头像 李华
网站建设 2026/9/2 21:30:26

公众号图文变视频:HeyGem赋能微信生态内容升级

HeyGem赋能微信生态:图文到视频的智能跃迁 在微信公众号运营者越来越感受到“不发视频就掉队”的今天,内容形式的升级已不再是选择题,而是生存题。短视频平台的算法偏爱动态内容,用户注意力向视觉化迁移,传统图文即便文…

作者头像 李华