安装某些软件的时候,折腾环境变量总是把人搞得身心俱疲。按照教程来折腾环境变量,十有八九是没有问题的,但是环境变量总是带给操作者一种莫名其妙的恐惧,恐惧源于未知,那么当我们尽可能的去窥得环境变量一隅,它所带来的恐惧可能也就烟消云散了。
变量
说起环境变量,首先就要说一说变量。比如下边这一句话,通俗易懂
int a = 0;
大概就是定义了一个int
型变量a
,a
的值是0,它的值是可变的,可变的量。类似的,环境变量首先是一个变量。当然这是c语言系列定义变量的方式,那么问题来了,环境变量和编程语言的变量有什么关系吗?
首先要理解一切操作皆命令,比如打开开始菜单,就是某一条或者某N条命令的组合,这个命令并不能直接被cpu识别,因此需要解释器解释成机器能够识别的指令,这个过程相当复杂,几本书也解释不完,此处有一个概念就好了。
现在我们知道了操作者要与操作系统进行交互,必须通过操作系统能够认识的命令(这里鼠标对图形的操作也会映射到命令,微软做了一件很伟大的事情),也就是所谓的解释器,解释器这里不再赘述,可以通过python解释器理解,不同的操作系统有不同的解释器,linux下有经典的bash,zsh,tcsh等,windows下主要是cmd,powershell这两个,虽然是不同的操作系统,但是大同小异,设计思想是类似的。首先看一下linux命令行解释器bash里定义变量的方式:
# /usr/bin/bash
a=0;# 不能有空格
echo $a # 输出变量到屏幕上,$符号取出变量的值
windows powershell(十分强大,就差自举了)里的变量定义方式:
# powershell 变量都是以$开头
$a=0
echo $a
环境变量
到现在环境变量的概念就呼之欲出了,环境变量也是变量,不同的环境变量作用不同。给环境变量加一个前缀,某一个bash的环境变量,powershell的环境变量,这样就更好理解了。比如PATH这个变量,windows上和linux是一样的名字,一样的作用。这个环境变量的主要作用是给操作系统寻找可执行文件。比如我们要执行创建文件夹的命令,可以用/usr/bin/mkdir myfolder
这样来操作,给出可执行文件的绝对路径,也可以直接mkdir myfolder
,操作系统是如何找到这一个可执行文件呢?答案就在PATH这个环境变量里,输入命令时操作系统会从PATH变量里检索所有的可执行文件,PATH内部多个路径用:
分割,顺序检索
绝对路径与相对路径
绝对路径:/usr/bin/vim
相对路径:./vim
可以认为相对路径方便了操作,也很大程度上是环境变量产生的原因。