环境变量浅析

Posted lucky_xian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了环境变量浅析相关的知识,希望对你有一定的参考价值。

环境变量浅析

1. 环境变量,系统变量和用户变量
  • 1.1. 环境变量包含系统变量和用户变量;
  • 1.2. 系统变量针对该操作系统下所有用户起效;
  • 1.3. 用户变量只针对当前用户起效;
2. PATH:系统变量。

当我们在命令行窗口敲出javac时,操作系统要怎么打印出如下信息呢?

思路分析:

  • 2.1. 操作系统肯定时执行了某个程序(windows为.exe文件,Linux时.sh文件),才能打印出这些信息;
  • 2.2. 操作系统要怎么找到这个程序呢?盖茨爸爸说过以下的话:
1.操作系统首先在当前目录下找当前要执行的文件(本例中的javac.exe不在当前目录),找到即可执行;
2.如果当前目录找不到,则应该去系统变量所记录的所有目录下一一查找,找到即可执行(本例中的javac.exe配在了path目录下了);
3.如果在以上三个目录都找不到,那操作系统就撒个娇,报个错好了~

注意事项:

  • 2.3. 我们加到path目录下的时bin目录,不是java文件夹目录,因为所有的可执行文件都在bin目录下呀,在java目录操作系统是扫描不到可执行文件的。
  • 2.4. 我们也可以在命令行使用可执行文件的全路径名来执行程序(路径名字不能有空格,若有空格需要加双引号):

  • 2.5. 豆知识: Program Files 也可以写成 Progra~1。
3.ClassPath:
  • 3.1. 当java程序执行一些.class文件,.jar文件(.jar包中包含的是编译好的.class文件),ClassPath需要告诉java程序,在哪里路径下可以找到这些文件;

  • 3.2. 和Path不同的是,当java程序需要寻找.class文件,.jar文件时,不会从当前目录查找,而是直接扫描ClassPath;

  • 3.3. 若要java程序运行当前目录下的.class文件,可以在class文件前加./表示当前路径;

  • 3.4. ClassPath下配置的路径以分号分隔开来;

  • 3.5.多个应用可能有同名的.class文件,而java程序扫描时是在 ClassPath所配置的路径列表下从左到右扫描,执行扫描到的第一个文件,所以可能导致结果出错,所以在IDEA等应用程序中,不需要人为手动设定CLASSPATH系统变量,而只设定当前程序的特定的CLASSPATH系统变量,这样便不会影响到其他程序的运行。

  • 这里可以写一个实例的,有空写一下。

4.JAVA_HOME:
  • 4.1. JAVA_HOME并不是Java运行需要的参数,而是提供给第三方工具使用的参数,第三方工具可以使用JAVA_HOME来寻找需要的java程序;
  • 4.2.使用步骤:第三方工具可以在自己的配置文件里使用%JAVA_HOME%/bin,即可执行java的bin目录下所有的程序了,而且以后Java的安装目录变更了,只要在系统变量的JAVA_HOME下同步新的安装目录,第三方工具不需要改动任何配置,依然可以使用新的java路径的bin目录下所有的程序。

参考博客(喜欢这个作者遣词造句,很好玩):https://blog.csdn.net/u011513853/article/details/52865076
oracle官方文档:http://https//docs.oracle.com/javase/tutorial/essential/environment/paths.html

  • oracle官方文档那个链接已经打不开了,回头可以找一下这个文档看一下。

以上是关于环境变量浅析的主要内容,如果未能解决你的问题,请参考以下文章

SQL*Plus环境变量设置浅析

浅析 JS 中的作用域链

浅析JavaScript闭包

javascript闭包浅析

flinkFlink 1.12.2 源码浅析 : StreamTask 浅析

TFTP反射放大攻击浅析