关于环境变量
环境变量
环境变量是每个程序员,或者说每个软件开发人员所绕不开的东西,那么环境变量到底是什么?为什么要进行配置?又应该如何配置呢?
什么是环境变量?
简单来说环境变量就是在操作系统中的一组键值对(key-value),其中每个键都必须要有一个相关联的值。它可以由操作系统,应用程序创建和管理,也可以由用户自己手动设置和修改。主要就是用来指定和存储操作系统和应用程序需要的一些常量和配置信息,如:临时文件夹位置和系统文件夹位置等
大家都知道,我们用户都是通过操作系统操作计算机。而在操作系统中,我们想运行某个程序,首先得先进入到对应的文件目录中,或者要指定程序所在的位置
比如说,在桌面上的程序,其实是一个快捷方式,这个快捷方式指定了程序所在的真实位置:
而如果在没有A程序的文件目录下运行A程序,就会提示:
而很多时候我们想要在其它目录下运行某个程序,如果每次都要去手动指定程序的目录,或者切换到指定目录,那么就会特别麻烦,而这个时候环境变量的作用就显现出来了。因为运行一个程序,操作系统不仅会在当前目录中去寻找,还会在环境变量PATH中去找。如果在PATH中配置了指定的路径,那么在别的路径下运行程序,那么也是可以的
举个例子,这里我在PATH中配置了java的环境变量,那么在其它路径下运行jdk目录下的程序,也是可以的
用户变量与系统变量
在环境变量中,又分两种,用户变量和系统变量
简单来说,系统变量是在操作系统级别定义的环境变量,它们适用于整个系统,所有的用户都可以使用和访问,而用户变量就是只针对当前这个用户有效
如何配置?
这里以Windows为例,搜索高级系统设置,就可以看到环境变量了
找到PATH,点击编辑,新建即可,添加对应键值对
但一般在添加环境变量的时候,都不会直接添加路径,而是会使用一种宏替换的方式
比如创建一个环境变量为”QQ”,添加路径。然后在其它变量下就可以直接引用,如:“%QQ%”,来代替这个变量名所指向的变量值
如果是java,就会创建一个JAVA_HOME,如果是mysql,就创建一个MYSQL_HOME,如下图:
那为什么要这样做呢?原因有下:
一是为了方便引用,比如,你JDK安装在C:\Program Files\Java\jdk1.5.0目录里,则设置JAVA_HOME为该目录路径, 那么以后你要使用这个路径的时候, 只需输入%JAVA_HOME%即可, 避免每次引用都输入很长的路径串
二是归一原则, 当你JDK路径被迫改变的时候, 你仅需更改JAVA_HOME的变量值即可, 否则,你就要更改任何用绝对路径引用JDK目录的文档, 要是万一你没有改全, 某个程序找不到JDK, 后果是可想而知的—-系统崩溃
三是第三方软件会引用约定好的JAVA_HOME变量, 比如tomcat中设置的环境变量就是JAVA_HOME,是通过这个变量去访问jdk的,因为每个人安装jdk的路径是不尽相同的,所以想要调用,只能通过变量赋值的方式提前配置好。不然, 你将不能正常使用该软件, 要是某个软件不能正常使用, 不妨想想是不是这个问题
java环境变量:
变量设置参数如下:
- 变量名:JAVA_HOME
- 变量值:JDK的安装路径
- 变量名:Path
- 变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
- 变量名:CLASSPATH
- 变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
这里需要注意的是,java的环境变量需要额外配置一个CLASSPATH(不区分大小写),因为java程序在运行时,首先会启动JVM,然后JVM会去启动“类加载器classloader”负责去硬盘上找“类”对应的“字节码”文件。classpath环境变量的作用是给类加载器指路的。
默认情况下,没有配置环境变量classpath的时候,类加载器(classloader)会从当前路径下找。如果配置了环境变量classpath的话,就只能从指定的路径下加载类
而CLASSPATH和PATH一样,环境变量都是默认由左到右搜索的,所以这里有三个搜索路径,分别是当前目录,%JAVA_HOME%\lib\dt.jar,和%JAVA_HOME%\lib\tools.jar,最先搜索的是.
在不配置的情况下,缺省的%CLASSPATH%环境变量的值也是.
,也就是当前目录。
- 注意:如果使用 1.5 以上版本的 JDK,不用设置 CLASSPATH 环境变量,也可以正常编译和运行 Java 程序