前言
在初学 Java 时,相信大家下载安装完 JDK 后的第一件事就是 「配置环境变量」,几乎所有的教程都会告诉你当你在命令行工具中输入了 java 命令和 javac 命令后看到类似如下的结果就说明你的 Java 环境配置好了 👇
不知道你有没有思考过这个「环境变量」究竟是什么?为什么配置了之后就会显示这样的内容,为什么不配置,就会提示你一个错误:'javac' 不是内部命令或外部命令,也不是可运行的程序或批处理文件。
如果你也有这样的疑问,不要着急,我们今天就来一探究竟。
文内相关的演示,均在 Windows10 操作系统下执行
从打开软件的两种方式说起
我们平时打开一个应用程序,一般是双击桌面图标或在开始菜单链接,无论是桌面的快捷图标还是菜单链接都包含了应用程序的安装位置信息,打开它们的时候系统会按照这些位置信息找到安装目录然后启动程序,这里以 QQ 这个软件为例:
上面是我们最常用的打开软件的方式,当然了,既然知道了一个应用程序的安装目录位置,我们也可以通过命令行工具进入启动程序所在的文件,通过命令打开,如笔者 QQ 的位置为:
"C:\Program Files (x86)\Tencent\QQ\Bin\QQScLauncher.exe"
QQ 的启动程序名为 QQScLauncher,那么我们打开终端工具,使用 cd 命令进入该目录,再输入.\QQScLauncher.exe
,即可通过命令启动 QQ。
做一点改进
如果想要炫技,每次都先进入安装目录再打开文件显然有些麻烦,那有没有什么简单的方式,直接在命令行工具中输入 QQScLauncher 甚至直接输入 QQ 就能打开软件呢?
当然是可以的,我们只需要在用户变量名Path
中添加安装路径的字符,我们在命令行工具无需进入软件的安装路径即可打开软件了。
我们来试下直接在命令行工具中输入 QQScLauncher,果然可以直接打开软件了。
原因
为什么配置环境变量前,直接输入 QQScLauncher 无法打开软件呢?
这是因为操作系统并不知道你的 QQScLauncher.exe 这个文件在哪里,所以无法执行对应的文件。
你在命令行里输入的那几个符号,其实就是一些可执行程序的名字(标签、别名),是可以直接被当前系统直接执行的程序。如果是在 Windows 系统中,则这些被输入的符号就是可以直接被 windows 系统执行、后缀为'.exe'的程序(文件)。
那么为了能够让操作系统找到这个可执行文件,我们就需要把 QQScLauncher.exe 这个 可执行文件所在的目录作为 PATH 环境变量的一部分设置起来,这样当你在命令行输入一个命令的时候,操作系统就会自动搜索 PATH 变量中所指定的所有目录 了。
在 Windows 系统中 PATH 变量中的所有路径采用分号分割,如果在 Linux 系统中采用冒号分割。
如果你设置好了环境变量,在命令行中还是出现同样的错误,那么有两种可能,一种就是你的设置不正确,另一种就是你的设置没有生效,一般你可以关闭命令行窗口再重新打开就可以了。
环境变量
上面所说的 PATH 变量其实就是环境变量,和他的名字一样,环境变量是描述环境的变量,是指在操作系统中用来指定操作系统运行环境的变量。它包含了一个或者多个应用程序所将使用到的信息。
例如 Windows 和 DOS 操作系统中的 PATH 环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到 PATH 中指定的路径去找。用户通过设置环境变量,来更好的运行进程。
系统变量 OR 用户变量
相信细心的小伙伴已经发现了,在上图的页面中除了用户变量还有一个叫系统变量的。
事实上,环境变量是一个总称,代表了系统变量和用户变量,因此我们说环境变量都是指的系统变量和用户变量。系统变量就是系统级别的变量,用户需要使用系统变量。如果系统变量被修改了,而任何系统用户都在用系统变量,因此每个系统用户都将受到影响。用户变量运行在系统变量之上的,每个用户拥有不同的用户变量,不同用户的用户变量之间是并列的,也是互不干扰的。他们之间的关系图如下如所示:
看到这,想必在验证 Java 环境是否安装成功的时候,我们在终端工具中输入 java
和 javac
命令显示出相应的字符的原理想必你也就知道了吧。
一图说明:
题外话
作为一个计算机专业的学生,一定要学会使用命令行工具,你可以选择自己喜欢的终端软件,这里我使用的是 「Windows Terminal」,一方面是因为他是微软官方推出的终端工具,更有一点就是他的颜值很高,你可以在微软的应用商店搜索下载安装。
以上就是本文的全部内容了,如果你觉得对你有所帮助,不妨点赞关注支持一波 👍