如何配置MacLinuxWindows环境变量
这里写目录标题
- 什么是环境变量
- 什么是PATH
- 为什么要配置环境变量
- 如何配置环境变量
- 环境变量有哪些
- 环境变量加载顺序
- 环境变量加载详解
- 配置参考
- 方法一: export PATH
- Linux环境变量配置方法二:vim ~/.bashrc
- Linux环境变量配置方法三:vim ~/.bash_profile
- Linux环境变量配置方法四:vim /etc/bashrc
- Linux环境变量配置方法五:vim /etc/profile
- Linux环境变量配置方法六:vim /etc/environment
- 其他shell配置参考
- fishshell如何配置
- Windows环境变量配置
- step1: 找到环境变量
- step2: 我们设置系统变量
- step3: 编辑 path 变量
作为一个程序开发者,每次安装一个工具的时候总会遇到环境变量的配置,Java环境变量、Python环境变、Maven等,还有一些可执行环境变量的配置。虽然是个基础操作,不知道有没有类似我这样每次都得去查一遍。不是忘记环境变量应该配置在什么地方,就是忘记路径。还有bash、zsh、fish每个shell的配置方式也不太一样,所以每次配置环境变量就很头大。今天要彻底做个总结!!!

什么是环境变量
环境变量(Environment Variable)是操作系统中用于存储配置信息、系统路径、临时数据等动态值的一种机制。这些变量在操作系统级别上存在,可以被系统和应用程序读取和使用。环境变量的作用在于为应用程序和系统提供一种灵活的配置方式,而不需要直接修改应用程序的源代码。它们通常在操作系统启动时被设置,或者在用户登录时被加载。
其中我们最长用到的是PATH,本文也主要介绍PATH。
什么是PATH
用于指定操作系统在哪些目录中查找可执行文件。例如,在命令行中输入 java 时,系统会根据 PATH 变量找到 Java 可执行文件的路径。
为什么要配置环境变量
刚接触编程或者环境变量的人可能不理解为什么要配置这种东西,为什么不是像软件安装完就直接执行了。因为软件安装过程简化了配置,系统都给你配置好了,就不需要操心了。但是作为一个程序开发者我们经常拿到的程序是个zip包,解压就能执行的那种,需要自己配置一下。不配置的话,当你执行某个命令时,系统会捉瞎,找不到这个命令在什么地方。比如你执行:
java -version
java是一个可执行的文件,但是如果不告诉系统java在什么地方,系统是无法识别这个java命令的。
当然你也可以这样执行一个命令,把路径拼全:
/Users/wanglianhai/sea/opt/apache-maven-3.8.6/bin/mvn -version
这里只是举个例子,实际上一些常用的工具不会有人这么搞的,谁会去记路径呀?系统会,所以把这种工作交给系统,配置个变量,系统会记住真实的目录地址,我们只需要执行就好了:
mvn -version
如何配置环境变量
这是本文的重点,上面介绍了环境变量的概念,这个环节实际操作如何配置环境变量,以及那眼花缭乱的各种文件bash_profile,etc/profile等是什么顺序。
环境变量有哪些
环境变量可以简单的分成用户自定义的环境变量以及系统级别的环境变量。
- 用户级别环境变量定义文件:/.bashrc**、**/.profile(部分系统为:~/.bash_profile)
- 系统级别环境变量定义文件:/etc/bashrc、/etc/profile(部分系统为:/etc/bash_profile)、/etc/environment
另外在用户环境变量中,系统会首先读取**/.bash_profile**(或者**/.profile**)文件,如果没有该文件则读取**/.bash_login**,根据这些文件中内容再去读取**/.bashrc**。
环境变量加载顺序
- /etc/environment
- /etc/profile
- /etc/bash.bashrc
- /etc/profile.d/test.sh
- ~/.profile
- ~/.bashrc
这些文件并不是每个系统都会存在的,经常会用到的是 ~/bash_profile /etc/profile
环境变量加载详解
Linux系统加载环境变量的顺序如下:
系统环境变量 -> 用户自定义环境变量
/etc/environment -> /etc/profile -> ~/.profile
配置参考
方法一: export PATH
使用export命令直接修改PATH的值,配置MySQL进入环境变量的方法:
export PATH=/home/uusama/mysql/bin:$PATH# 或者把PATH放在前面
export PATH=$PATH:/home/uusama/mysql/bin
注意事项:
生效时间:立即生效
生效期限:当前终端有效,窗口关闭后无效
生效范围:仅对当前用户有效
配置的环境变量中不要忘了加上原来的配置,即$PATH部分,避免覆盖原来配置
Linux环境变量配置方法二:vim ~/.bashrc
通过修改用户目录下的~/.bashrc文件进行配置:
vim ~/.bashrc
# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin
注意事项:
生效时间:使用相同的用户打开新的终端时生效,或者手动source ~/.bashrc生效
生效期限:永久有效
生效范围:仅对当前用户有效
如果有后续的环境变量加载文件覆盖了PATH定义,则可能不生效
Linux环境变量配置方法三:vim ~/.bash_profile
和修改~/.bashrc文件类似,也是要在文件最后加上新的路径即可:
vim ~/.bash_profile
# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin
注意事项:
生效时间:使用相同的用户打开新的终端时生效,或者手动source ~/.bash_profile生效
生效期限:永久有效
生效范围:仅对当前用户有效
如果没有/.bash_profile文件,则可以编辑/.profile文件或者新建一个
Linux环境变量配置方法四:vim /etc/bashrc
该方法是修改系统配置,需要管理员权限(如root)或者对该文件的写入权限:
# 如果/etc/bashrc文件不可编辑,需要修改为可编辑
chmod -v u+w /etc/bashrc
vim /etc/bashrc
# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin
注意事项:
生效时间:新开终端生效,或者手动source /etc/bashrc生效
生效期限:永久有效
生效范围:对所有用户有效
Linux环境变量配置方法五:vim /etc/profile
该方法修改系统配置,需要管理员权限或者对该文件的写入权限,和vim /etc/bashrc类似:
# 如果/etc/profile文件不可编辑,需要修改为可编辑
chmod -v u+w /etc/profile
vim /etc/profile# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin
注意事项:
生效时间:新开终端生效,或者手动source /etc/profile生效
生效期限:永久有效
生效范围:对所有用户有效
Linux环境变量配置方法六:vim /etc/environment
该方法是修改系统环境配置文件,需要管理员权限或者对该文件的写入权限:
# 如果/etc/bashrc文件不可编辑,需要修改为可编辑
chmod -v u+w /etc/environment
vim /etc/profile
# 在最后一行加上
export PATH=$PATH:/home/uusama/mysql/bin
注意事项:
生效时间:新开终端生效,或者手动source /etc/environment生效
生效期限:永久有效
生效范围:对所有用户有效
其他shell配置参考
fishshell如何配置
fishshell配置环境变量如下,注意路径:
sudo vi ~/.config/fish/config.fish
配置内容:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_321.jdk/Contents/Home
export GO_HOME=/Users/xxx/sea/opt/go/bin
export CLICOLOR=1
export LSCOLORS=Gxbxaxdxcxegedabagacad
set -x PATH /usr/local/bin /opt/homebrew/bin /Users/xxx/sea/opt/go/bin /Users/xxx/sea/opt/apache-maven-3.8.6/bin %JAVA_HOME%/bin /usr/local/mongodb/bin $PATH
set fish_plugins rails rbenv bundler node brew rake
if status is-interactive# Commands to run in interactive sessions can go here
end
function nvmbass source /opt/homebrew/opt/nvm/nvm.sh ';' nvm $argv
end
Windows环境变量配置
step1: 找到环境变量
我的电脑【右击】 --> 选择 属性 --> 高级系统设置 --> 环境变量

用户变量: 表示设置的这个 javac 环境变量只能在 MSI-PC 这个用户下面使用
系统变量: 表示 任何登录这个 系统的用户都是可以使用 javac 环境变量
两种变量设置方式一样。
step2: 我们设置系统变量
在系统变量 位置点击 【新建】 并进行相关设置,如下图:

step3: 编辑 path 变量
在 系统变量中, 找到 path 变量,并点击 【编辑】

在path编辑页面中 添加一个 关于 JAVA_HOME 变量的路径

相关文章:
如何配置MacLinuxWindows环境变量
这里写目录标题 什么是环境变量什么是PATH为什么要配置环境变量 如何配置环境变量环境变量有哪些环境变量加载顺序环境变量加载详解 配置参考方法一: export PATHLinux环境变量配置方法二:vim ~/.bashrcLinux环境变量配置方法三:vim ~/.bash_…...
【Linux】从C语言文件操作 到Linux文件IO | 文件系统调用
文章目录 前言一、C语言文件I/O复习文件操作:打开和关闭文件操作:顺序读写文件操作:随机读写stdin、stdout、stderr 二、承上启下三、Linux系统的文件I/O系统调用接口介绍open()close()read()write()lseek() Linux文件相关重点 复习C文件IO相…...
mask transformer相关论文阅读
前面讲了mask-transformer对医学图像分割任务是非常适用的。本文就是总结一些近期看过的mask-transformer方面的论文。 因为不知道mask transformer是什么就看了一些论文。后来得出结论,应该就是生成mask的transformer就是mask transformer。 相关论文: …...
springboot+vue3支付宝接口案例-第二节-准备后端数据接口
springbootvue3支付宝接口案例-第二节-准备后端数据接口!今天经过2个小时的折腾。准备好了我们这次测试支付宝线上支付接口的后端业务数据接口。下面为大家分享一下,期间发生遇到了一些弯路。 首先,我们本次后端接口使用的持久层框架是JPA。这…...
贪吃蛇游戏设计文档(基于C语言)
1. 引言 本设计文档旨在详细阐述一款2D贪吃蛇游戏的设计思路、功能模块划分以及具体实现要点。通过严谨的需求分析与清晰的架构设计,确保游戏开发过程有序进行,并最终打造出一款用户友好、稳定流畅的经典贪吃蛇游戏。 2. 需求分析 2.1 核心元素 - 蛇&…...
在Windows上安装与配置Apache服务并结合内网穿透工具实现公网远程访问本地内网服务
文章目录 前言1.Apache服务安装配置1.1 进入官网下载安装包1.2 Apache服务配置 2.安装cpolar内网穿透2.1 注册cpolar账号2.2 下载cpolar客户端 3. 获取远程桌面公网地址3.1 登录cpolar web ui管理界面3.2 创建公网地址 4. 固定公网地址 前言 Apache作为全球使用较高的Web服务器…...
幻兽帕鲁服务器出租,腾讯云PK阿里云怎么收费?
幻兽帕鲁服务器价格多少钱?4核16G服务器Palworld官方推荐配置,阿里云4核16G服务器32元1个月、96元3个月,腾讯云换手帕服务器服务器4核16G14M带宽66元一个月、277元3个月,8核32G22M配置115元1个月、345元3个月,16核64G3…...
day05休息,day06 有效的字母异位词、两个数组的交集、快乐数、两数之和
题目链接:有效的字母异位词、两个数组的交集、快乐数、两数之和 有效的字母异位词 时间复杂度: O(n) 空间复杂度: O(S), S为字符集大小,这里为26 Go func isAnagram(s string, t string) bool {// s和t的长度一定是相等的if len(s) ! len(t) {return…...
star原则
"STAR" 原则通常用于回答面试或描述工作经验等场景中,以清晰、有条理地传达信息。"STAR" 是 Situation(情境)、Task(任务)、Action(行动)、Result(结果…...
蓝桥杯---九数组分数
1,2,3 ... 9 这九个数字组成一个分数,其值恰好为1/3,如何组法? 下面的程序实现了该功能,请填写划线部分缺失的代码。 注意,只能填写缺少的部分,不要重复抄写已有代码。不要填写任何多余的文字。 代码 public class _05九数组分数 {public static void test(int[] x){int a …...
将 Amazon Bedrock 与 Elasticsearch 和 Langchain 结合使用
Amazon Bedrock 是一项完全托管的服务,通过单一 API 提供来自 AI21 Labs、Anthropic、Cohere、Meta、Stability AI 和 Amazon 等领先 AI 公司的高性能基础模型 (FMs) 选择,以及广泛的 构建生成式 AI 应用程序所需的功能,简化开发,…...
###C语言程序设计-----C语言学习(6)#
前言:感谢老铁的浏览,希望老铁可以一键三连加个关注,您的支持和鼓励是我前进的动力,后续会分享更多学习编程的内容。 一. 主干知识的学习 1. while语句 除了for语句以外,while语句也用于实现循环,而且它…...
Hadoop3.x源码解析
文章目录 一、RPC通信原理解析1、概要2、代码demo 二、NameNode启动源码解析1、概述2、启动9870端口服务3、加载镜像文件和编辑日志4、初始化NN的RPC服务端5、NN启动资源检查6、NN对心跳超时判断7、安全模式 三、DataNode启动源码解析1、概述2、初始化DataXceiverServer3、初始…...
基于vue实现待办清单案例
一、需求 新增内容; 删除内容; 统计操作; 清空数据。 示例图: 二、代码演示 1、基础准备 index.css代码 html, body {margin: 0;padding: 0; } body {background: #fff ; } button {margin: 0;padding: 0;border: 0;backgr…...
应急响应-流量分析
在应急响应中,有时需要用到流量分析工具,。当需要看到内部流量的具体情况时,就需要我们对网络通信进行抓包,并对数据包进行过滤分析,最常用的工具是Wireshark。 Wireshark是一个网络封包分析软件。网络封包分析软件的…...
计算机网络·网络层
网络层 网络层提供的两种服务 争论: 网络层应该向运输层提供怎样的服务?面向连接还是无连接? 在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统? 2 种观点: 面向连接的可靠交付。 无连…...
2024/1/28周报
文章目录 摘要Abstract文献阅读题目引言方法The ARIMA modelTime delay neural network (TDNN) modelLSTM and DLSTM model 评估准则实验数据描述实验结果 深度学习AttentionAttention思想公式步骤 Attention代码实现注意力机制seq2seq解码器Model验证 总结 摘要 本周阅读了一…...
Vue3中的ref和shallowRef、reactive和shallowReactive
一:ref、reactive简介 ref和reactive是Vue3中定义响应式数据的一种方式。ref通常用来定义基础类型数据。reactive通常用来定义复杂类型数据。 二、shallowRef、shallowReactive简介 shallowRef和shallowReactive是Vue3中定义浅层次响应式数据的方式 三、Api使用对比…...
go包与依赖管理
包(package) 包介绍 Go语言中支持模块化的开发理念,在Go语言中使用包(package)来支持代码模块化和代码复用。一个包是由一个或多个Go源码文件(.go结尾的文件)组成,是一种高级的代码…...
C++文件操作基础 读写文本、二进制文件 输入输出流 文件位置指针以及随机存取 文件缓冲区以及流状态
一、写入文本文件 文本文件一般以行的形式组织数据。 包含头文件:#include <fstream> 类:ofstream(output file stream) ofstream 打开文件的模式(方式):类内open()成员函数参数2.参数1是…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
