目录
如果有存在不正确或有什么不懂的地方,请不要害羞,也不要吝啬你的问题,踊跃提出来吧
说明:
- 本博客在当初理解到了环境变量的作用之后,脑子一热就写了一片博客,所以有的地方仍然不够详细。所以我在2019.12.10更新了本博客的内容
IT人常常会使用dos、终端、控制台等等,多多少少会遇到命令行界面。也就是这样的:
![Windows dos](https://i-blog.csdnimg.cn/blog_migrate/863ff00763ace86a4ede7a76f25d4eb1.png)
![Ubuntu18终端界面](https://i-blog.csdnimg.cn/blog_migrate/18a3653a8b4d023b52306c0980ddea46.png)
![Linux命令行](https://i-blog.csdnimg.cn/blog_migrate/179498283c7513aa21308d420067a668.png)
![远程终端](https://i-blog.csdnimg.cn/blog_migrate/9ce542e9e5b0df3488b265f80ccb904f.png)
一、环境变量关系
首先,我来说一下他们之间的关系:环境变量只是一个总称,代表了系统变量和用户变量,因此我们说环境变量都是指的系统变量和用户变量。系统变量就是系统级别的变量,用户需要使用系统变量。如果系统变量被修改了,而任何系统用户都在用系统变量,因此每个系统用户都将受到影响。用户变量运行在系统变量之上的,每个用户拥有不同的用户变量,不同用户的用户变量之间是并列的,也是互不干扰的。他们之间的关系图如下如所示
![变量关系](https://i-blog.csdnimg.cn/blog_migrate/663424aa3ae57b492a1b17b4c39cad4f.png)
二、为什么输入几个符号就能显示相应的提示?
不知道有没有人有疑问,为什么我在命令行里面输入几个字符,按下回车,屏幕就会显示相应的提示。
你在命令行里输入的那几个符号,其实就是一些可执行程序的名字(标签、别名),是可以直接被当前系统直接执行的程序。如果是在Windows系统中,则这些被输入的符号就是可以直接被windows系统执行、后缀为'.exe'的程序(文件)。
再比如如在Linux中,输入的字符则是被叫做可执行的文件,这里可执行文件意义等同于Windows中的后缀为'.exe'的文件(程序),这里值得说明的是:Linux中是不存在通过后缀名来识别文件类型的,即使存在也仅仅只是为了帮助记忆,或者便于人们识别而已。
众所周知,程序是给机器阅读的,所以,这些可执行的程序或文件大多是机器码,不是人类可识别的字符。Linux中的可执行文件(程序)不可以在Windows中去运行,因为Linux系统不是Windows系统(每个系统执行程序或运行代码的方式是不同的)。
三、命令行中的程序来自哪里?
我第一次接触命令行
本文作者最开始遇到这个问题的时候在初学Java程序的时候。学习Java程序需要配置环境变量,如果环境变量配置不成功,在命令行中去输入'java'就会提示'找不到xxxx'的一类的关键词。通过第二节大概知道为什么了,你输入的这个java字符就是代表可执行程序
程序来自于哪里?
其实这个叫'java'的应用程序就在你的安装目录下面的bin目录中。所有软件(包括Java在内的所有软件)安装目录下bin目录中,均代表里面放的是可执行的机器码(程序文件),也就是给机器阅读(执行)的文件(程序)。
执行程序跟环境变量有什么关系?
咋们来看看windows中的环境变量截图
![变量关系截图](https://i-blog.csdnimg.cn/blog_migrate/640be7505bc0805908c1a5488d4fb725.png)
命令行之所以能执行这个程序,是因为环境变量。
在上面的截图中可以看得出,变量都只是一个名字,真正起到作用的是变量的值,可以看到变量值中大部分都是目录路径,少部分可以看到'.exe'结尾的程序,目录是用来干嘛的?就是用来给命令行搜索程序文件的,你在环境变量值中填写的目录路径,会被命令行遍历目录中的内容,而你知道的目录下都是些可执行程序。那么这个时候命令行输入的命令都会在这些变量值中的目录去找程序,如果找到了跟在命令行中输入的名字(字符)一模一样的程序名,那么命令行就会执行这个程序,以达到执行命令行程序的功能
因此,所有在命令行中去执行的程序,其位置位置均储存在环境变量目录值中,我们在执行命令行中程序的时候,其实就是在查找环境变量所有程序位置中有没有(是否找得到)这个程序,如果没有就会提示'未找到'等关键词,如果在环境变量中找到了你在命令行中输入的程序名字,那么通过环境变量就可以直接去执行程序。
四、为什么需要环境变量?
在电子计算机出现之初,命令行就出现了。最开始的时候,人们(少数)都是使用的命令行,后来图形化的电子计算机的出现,命令行的计算机才从普通消费者印象中渐渐消失殆尽,所以命令行是计算机最开始的就有的了。那为什么现在命令行还没有消失?因为它有不可替代的优势:高效、快捷。
图形界面只是方便非IT专业的人们准备的,图形界面看起来友好,不需要太好的逻辑就能操作系统,这也就是为什么后来Windows快速占领市场,而同样非常优秀的Linux却只能听起来像神话一样的存在。
如果有存在不正确或有什么不懂的地方,请不要害羞,也不要吝啬你的问题,踊跃提出来吧