Windows配置:环境变量是个什么玩意儿?
我们装很多软件都需要配置环境变量,配置的多了,就会好奇环境变量究竟意味着什么?
这里先把msdn上的Environment variables的部分原文贴出来:
翻译如下:
每个进程都有包含环境变量和它们的值的环境块,环境变量有两种:用户环境变量(为每个用户自己设置)和系统环境变量(为所有用户设置)。
默认的,一个子进程继承他父进程的环境变量,由command processor(即cmd)启动的进程继承command processor的环境变量,为了给子进程指定一个不一样的环境变量,则需创建一个新的环境块通过指针作为参数传给CreateProcess函数。command processor (程序)提供了set命令来显示他的环境变量块或者是创建新的环境变量,你也可以查看或是修改环境变量,通过选择控制面板中的系统,选择高级系统设置,并点击环境变量。
每个环境变量块包含如下格式的环境变量:
Var1=Value1\0
Var2=Value2\0
Var3=Value3\0
…
VarN=ValueN\0\0
一个环境变量的名字不能包含等号(=)。
而环境变量中的很多东西是有不同的用处的,其中path变量中的作用就是,任何程序当打开文件时,系统会从当前文件夹下和path变量所包含的路径中寻找这个文件。在CMD中也一样,cmd中的很多命令,其实都是一段段小程序,通过包含程序所在的目录,即可以变成cmd命令。比如我们写了一段程序如下:
#include<stdio.h> int main(char* argv[],int argc) { printf("123"); return 0; }
最后把它编译后保存到了G:/MyFiles 中,名字为cat.exe。这时只要在path中加入G:/MyFiles;点击确定之后,就可以在cmd中编写cat,cmd就会输出123了。所以很多人说Windows不能编写自己的命令,其实是不对的。(关于具体如何传参这里不再细讲)。
而所谓环境变量,也是变量,在cmd中,按照dos变量的输出方法,输出ehco %SYSTEMROOT%就会输出环境变量systemroot的值:
其中echo表示输出,变量前后加%是dos命令变量的输出方式。
所以从翻译中就可以了解,系统环境变量就可以让所有的用户使用,而用户变量就只可以给自己用啦。