前言

学习一些新的软件的第一步就是要配置环境,很多软件都要要编辑环境变量这个过程.以前一直是看着网上都的教程一步一步操作的,抛开不知道为什么不说,还经常配置不成功,今天就花时间学习一下windows的环境变量的原理和用处.

1.环境变量面板

网上有很多打开这个面板的方法教程,这里就不详细说了.打开之后是这个样子的.

python 用户变量 系统变量 用户变量path有什么用_python


上面的用户变量是只对当前用户生效,下面的系统变量会对所有用户生效.我们主要讨论系统变量

可以看到,所有的变量都有两个部分组成.一个是变量名(左侧),一个是值(右侧).

在这些变量中,有一个和其他的不一样,就是Path变量.所以可以变量分为两种:path和其他

至于变量的用处,再后面会讲.在此之前,先看:

2 命令行是怎么找到命令的?

第一步:先在当前的目录下找,如果有符合的,就直接运行

举个例子:这里有一个hello.exe程序

python 用户变量 系统变量 用户变量path有什么用_python 用户变量 系统变量_02


在这个文件下打开终端,就可以直接运行

python 用户变量 系统变量 用户变量path有什么用_windows_03

第二步:如果在当前目录下没有符合的,就顺序查找Path变量里的目录

举个例子:还是刚才的hello.exe,这一次假设我们在其他的目录下运行

首先在当前目录下是找不到hello.exe的,所以会顺序查找Path里的目录

python 用户变量 系统变量 用户变量path有什么用_python_04


先找:C:\Program Files\Common Files\Oracle\Java\javapath(第一条)

然后:D:\Desktop\Desktop\计算机\并行计算\实验3\Bin(第二条)

…一直这样找下去

直到

python 用户变量 系统变量 用户变量path有什么用_windows_05


找到最后一条,发现在D:\hello里有hello.exe可以执行,然后执行hello.exe.

这就实现了可以在任意位置执行hello.exe

python 用户变量 系统变量 用户变量path有什么用_javac_06


比如说可以在桌面直接执行

优先级问题

当环境变量的目录中有多个同名的变量时,会顺序查找到第一个复合的执行,后面的就不管了.

可以做一个小实验来理解

python 用户变量 系统变量 用户变量path有什么用_python 用户变量 系统变量_07


python 用户变量 系统变量 用户变量path有什么用_shell_08


我们现在写了两个hi程序,一个在hello文件夹里,一个在hi文件夹里.这两个程序的区别在于 hello 中的会输出 hi 而 hi 文件夹中的会输出 hi0.先把hi文件夹的环境变量放在hello文件夹前

python 用户变量 系统变量 用户变量path有什么用_windows_09


这时理论上应该输出hi0,结果也如此

python 用户变量 系统变量 用户变量path有什么用_shell_10


现在换一下位置,这时候就输出hi了

python 用户变量 系统变量 用户变量path有什么用_shell_11


python 用户变量 系统变量 用户变量path有什么用_shell_12


(补充:会先找系统变量的path,再找用户变量path)

第三步.如果前两步都找不到…

然后就是大家喜闻乐见的错误了

python 用户变量 系统变量 用户变量path有什么用_javac_13

3.环境变量的作用

假如我们要使用python,只需要再控制台上输入python就可以了

python 用户变量 系统变量 用户变量path有什么用_shell_14


尽管python不在当前的目录下,但是由于python在环境变量里,也是可以找到的.

假如说没有环境变量,就只能在环境变量对应的目录下才能使用了…

python 用户变量 系统变量 用户变量path有什么用_python_15

4.添加环境变量

看到这里,怎么添加环境变量就已经一目了然了,直接在path变量中加入对应的目录就可以了.但是还有一个问题,那就是除了path之外的变量是干什么用的呢.

这些变量就是一个key-value对,有点像宏定义.

比如说这个java的,上图是JAVA_HOME变量,下图是Path变量里对其的引用

python 用户变量 系统变量 用户变量path有什么用_python_16

python 用户变量 系统变量 用户变量path有什么用_windows_17


简而言之,定义了JAVA_HOME之后,使用%JAVA_HOME%(前后加上%表示引用这个变量)就会被替换为

C:\Program Files\Java\jdk-16.0.1

那么 %JAVA_HOME%\bin 就是

C:\Program Files\Java\jdk-16.0.1\bin

要说有什么作用的话,估计是更加简洁吧…

tips:可以在终端里用echo %变量名%查看变量值

python 用户变量 系统变量 用户变量path有什么用_python_18

总结

没有总结