其实写这一篇时还是非常不好意思的,毕竟无论是学习还是开发这么久,第一步就是配置SDK,编辑环境变量。但是这一步我为了避免一些未知的错误,避免踩坑,通常采用的方式是网上找对应的有效图文教程,跟着一步步完成。整个过程中还是少了一点思考,因此印象不深。今天,借着搭建go的开发环境,对整个配置过程进行了梳理,有了一些思考与总结。

名词理解

首先,在开始之前,我们先要理解以下概念:

SDK

SDK:全称(Software Development Kit 软件开发工具包),一般都是软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。

因此针对不同的操作系统往往有不同的SDK,以go官网给出的SDK为例:

关于环境变量配置的思考总结_环境变量

  • ​darwin​​:mac下的SDK。其中​​pkg​​是图形化安装包,而​​tar.gz​​是解压就可以使用。
  • ​linux​​:linux下的SDK。386是32位系统,amd64是64位系统。
  • ​windows​​:win下的SDK,其中​​msi​​是图形化安装包,而​​zip​​是解压就可以使用。
  • ​freebsd​​:unix下的SDK。

可以把SDK理解为由第三方服务商提供的实现软件产品某项功能的工具包,里面一般以集合api和文档、范例、工具的形式出现,也就是由很多类型文件的集合。这里以直接从官网下载的go的SDK(zip解压后)为例:

关于环境变量配置的思考总结_环境变量_02

可以发现,里面有很多文件,例如api,可执行的二进制bin文件(例如go.exe 用来编译和运行go源码,gofmt.exe),doc文档,lib相关的库文件,test测试用的文件,以及src源码等等。

环境变量

关于环境变量配置的思考总结_环境变量_03

用户环境变量

用户环境变量,是独属于某个用户的,只有配置这个环境变量的用户才能使用它。一旦切换用户就无法使用该环境变量。

系统环境变量

系统环境变量是整个系统的。配置了系统环境变量后,使用该操作系统的任何用户都能通过这个环境变量直接在命令窗口直接找到相应程序。

可以通过系统变量中的内容可知,该系统变量有很多,并且每一项都有其对应的值,每个变量名都有其独特的含义与作用。

PATH:指定可执行文件的搜索路径。一般配置环境常在PATH变量放入配置程序路径。一般可执行文件都在二进制bin目录中。因此我们通常会把软件目录下的bin路径添加到PATH中。

定义PATH环境变量的好处是:即使不在该可执行文件的目录下,仍然可以通过命令行调用该可执行文件。

这里需要额外注意的一点是,通常系统在环境变量中寻找程序路径时,是由前往后(或者说是从上往下)寻找,找到第一个后会直接使用,并且不再往下寻找。因此存在多个路径时,要把想要使用的路径移动到PATH中靠前的位置。例如同时装了mysql8.0和5.7两个版本,这两个版本查版本号的命令都是​​mysql -V​​,对于​​mysql​​这个命令系统会在PATH中寻找它的路径,如果8.0的path在5.7的上面,则会执行8.0的程序,而不会执行5.7的程序。因此5.7的path就相当于失效的,所以没有必要添加同一程序的两个path。

此外,系统环境变量中,还可以采用​​% %​​来调用系统中的其他环境变量。例如在配置go的环境时,先定义了go的SDK的根目录 ​​D:\go​​ 其变量名为​​GOROOT​​,作为go的执行目录,那么在配置它的PATH时,可以将它的值设置为 ​​%GOROOT%\bin​​,起到变量替换的作用。未来如果SDK根目录改变的话,也只需要修改​​GOROOT​​变量值即可,而不需要动PATH中的变量值。类比java,java中也把​​JAVA_HOME​​作为java的执行目录。

最后,一点点感触,通常我们可能都习惯于.msi自动安装配置好一切,而忽略了对于一些基础设置的思考,因此常常会有“最复杂的一步是配置环境”这种说法,其实用心去思考总结,这种说法也就不攻自破了。


欢迎关注个人公众号【AIShareLab】,一起交流更多前沿算法,Paper解读,项目源码,面经总结。