news 2026/4/15 14:44:42

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

作者头像

张小明

前端开发工程师

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/4/12 15:38:14

AI主播24小时不间断?HeyGem循环生成视频应对策略

HeyGem数字人视频生成系统深度解析:打造永不疲倦的AI主播 在短视频内容爆炸式增长的今天,企业与创作者面临的最大挑战之一,是如何持续、高效地输出高质量视频。传统真人拍摄不仅成本高昂,还受限于时间、场地和人力。一个主播不可能…

作者头像 李华
网站建设 2026/4/14 2:06:52

【源码集锦】租房小程序技术搭建

在数字化租房需求爆发的当下,租房小程序凭借 “即用即走” 的轻量化体验,成为连接租客与房源的核心载体。一款稳定、高效、用户体验佳的租房小程序,背后需要一套科学的技术架构与严谨的开发流程支撑。本文将从技术选型、核心功能实现、性能优…

作者头像 李华
网站建设 2026/4/12 20:01:13

正面人脸视频最佳实践:提升HeyGem数字人唇形同步精度

提升HeyGem数字人唇形同步精度:正面人脸视频的实战指南 在虚拟主播24小时不间断直播、AI教师批量生成课程视频的今天,一个微小的技术细节——口型是否跟得上发音——往往决定了用户是沉浸其中还是瞬间出戏。尽管深度学习模型已经能让数字人“开口说话”&…

作者头像 李华
网站建设 2026/4/5 18:02:16

揭秘C# 交错数组底层机制:为什么它在某些场景比多维数组快10倍?

第一章:C# 交错数组性能优势的底层逻辑C# 中的交错数组(Jagged Array)是一种数组的数组,其每一行可以拥有不同的长度。相较于二维数组,交错数组在内存布局和访问效率上具备显著优势,这源于其更贴近底层内存…

作者头像 李华
网站建设 2026/4/10 23:24:41

C#内联数组性能暴增的秘密(仅限.NET 6+精英开发者掌握)

第一章:C#内联数组性能暴增的秘密在高性能计算和低延迟场景中,C# 通过 .NET 运行时的持续优化,引入了“内联数组”(Inline Arrays)这一特性,显著提升了数据密集型操作的执行效率。该特性允许开发者在结构体…

作者头像 李华