news 2026/4/17 20:04:58

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

作者头像

张小明

前端开发工程师

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/8 12:13:03

数据量超百万怎么滤?C#高性能过滤架构设计全解析

第一章:数据量超百万怎么滤?C#高性能过滤架构设计全解析在处理超过百万级数据的过滤场景时,传统的 LINQ 查询或内存遍历方式往往会导致性能瓶颈。为实现高效的数据筛选,必须结合数据结构优化、并行计算与索引机制构建高性能过滤架…

作者头像 李华
网站建设 2026/4/18 8:51:38

C#能调用HeyGem API吗?.NET生态集成扩展方向探讨

C#能调用HeyGem API吗?.NET生态集成扩展方向探讨 在企业智能化升级的浪潮中,越来越多开发者面临一个现实问题:如何将前沿AI能力无缝嵌入现有的业务系统?尤其是在教育、客服、营销等领域,数字人视频自动生成正成为提升内…

作者头像 李华
网站建设 2026/4/15 17:56:03

开源数字人新星崛起:HeyGem与D-ID、SadTalker对比评测

开源数字人新星崛起:HeyGem与D-ID、SadTalker对比评测 在虚拟主播24小时不间断直播、AI客服开口说话、在线课程教师“复刻”讲解的今天,数字人技术早已不再是实验室里的概念玩具。随着AIGC浪潮席卷内容生产领域,如何高效、安全、低成本地生成…

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

HeyGem数字人系统预览功能怎么用?视频与音频同步校验方法

HeyGem数字人系统预览功能与音视频同步校验实战解析 在虚拟主播24小时不间断直播、AI教师批量生成多语种课程的今天,数字人早已不再是实验室里的概念。但一个真正可用的数字人系统,核心不在于“像不像”,而在于说出来的每一句话,嘴…

作者头像 李华
网站建设 2026/4/17 8:45:26

C#集合数据过滤实战精要(高手都在用的5大模式)

第一章:C#集合数据过滤实战精要在现代C#开发中,高效处理集合数据是提升应用性能与可读性的关键。利用LINQ(Language Integrated Query),开发者可以以声明式语法对集合进行灵活过滤,极大简化传统遍历逻辑。使…

作者头像 李华
网站建设 2026/4/18 8:49:13

【技术】一文看懂Kubernetes之Calico 网络实现(二)

【技术】一文看懂Kubernetes之Calico 网络实现(二)📌 本系列文章主要探讨云计算领域Kubernetes中CNI Calico组件的架构以及网络实现,本文主要介绍calico的ipip网络模式下的通信实现一、Calico 网络模式模式数据包封装是否overlay…

作者头像 李华