在很多地方都会涉及到环境变量的概念,这边稍微记录一下笔记。
一、环境变量的分类
Windows中有两种环境变量:用户变量 和 系统变量,它们的区别和作用如下所示:
- 环境变量不区分大小写;
- 系统变量对所有用户有效,用户变量只对当前用户有效;
- 名称是变量,值是里面的内容,也就是通过变量存储了想要存储的内容,方便调用;
- 每次新加了命令以后,要确定保存,再重启cmd;
- 在cmd中输出环境变量:ECHO %变量名%。
下面是一些例子:
二、变量名为Path的环境变量
在环境变量中有一个比较特殊的,名为Path,它存放了众多的路径,这些路径是告诉系统或者用户可执行文件放在什么位置。Windows系统在cmd中执行用户命令时,若用户没有给出文件的绝对路径,比如直接输入一个java/python,那么系统会如何执行呢?
执行过程:
- 首先在当前工作目录下寻找相应的可执行文件、批处理文件,如果找到该命令对应的可执行文件则执行;
- 若当前目录找不到对应名的程序,就会在系统变量的Path变量下保存的路径中依次寻找对应的可执行程序文件;
- 如果系统变量的Path变量下保存的路径都找不到,再到用户变量的Path变量下保存的路径中依次寻找。
- 注意:如果同时包含该命令,优先执行系统变量下Path中保存的路径下的该命令。
下面给两个例子,第一个是不存在的命令:
这里的“内部”指的是smile文件夹路径,即当前路径下,“外部”指的是环境变量中存放的路径;这个命令不论在当前目录下还是环境变量Path下保存的所有路径中都不包含,所以会报错。
第二个例子是存在的命令:
在这个例子中,java指令是在jdk目录的bin文件夹下的,我的电脑的jdk路径为 D:\Java\jdk1.8,显然不是图中的当前目录,所以按照上述的寻找命令的过程中,第一步在当前目录是找不到的,要进行第二步,在系统变量Path下的所有路径中依次寻找该命令,我的系统变量path下保存的路径如下:
图中红框内就是jdk的路径,那么它就会执行这个路径下的java命令。这里将jdk的路径用JAVA_HOME变量再定义了一下,直接写路径也可以。
有了上面两个例子,应该比较好理解Path变量的作用了。如果不将可执行文件所在的路径加入环境变量Path,那么只能在该可执行文件所在的文件夹下执行它,在别的路径下就不能执行它;而如果加入了环境变量Path中,那么在任何路径都可以执行这个可执行文件。(先找“内部”,再找“外部”)
通过添加环境变量Path的内容,可以通过命令的方式来执行可执行文件。环境变量Path中存放路径是为执行的指令提供更方便的一种方式。(不用进入该命令所在的目录,在任意位置都可以执行)