环境变量在进行linux开发过程中经常碰到,那什么是环境变量呢?很多朋友在刚学习Linux的时候对环境变量不是特别理解,变量不应该是在编程语言中类似于全局变量和局部变量吗?怎么又来了个环境变量? |
环境变量在进行linux开发过程中经常碰到,那什么是环境变量呢?很多朋友在刚学习Linux的时候对环境变量不是特别理解,变量不应该是在编程语言中类似于全局变量和局部变量吗?怎么又来了个环境变量?
在我们主流的OS中几乎都存在环境变量的概念,同样在windows下也是存在环境变量的,如下图所示:
其实这些所谓的环境变量就相当于一些信息的简称,比如搜索、查询的路径等等,以后应用程序可以获取这些环境变量中包含的信息来完成相应的工作,很多小伙伴有这样的体会,经常在windows中运行刚安装的软件会需要在环境变量中添加一些路径等信息,否则软件无法运行。
在Linux中也是类似的作用,当执行一个命令,系统会根据环境变量中的路径信息依次搜索直到找到对应的程序运行。
02 Linux环境变量Linux环境变量主要分为系统级别和用户级级别,这点与windows也是非常类似的,如下图所示:
不同级别的环境变量在linux系统存在于不同的配置文件,且他们的作用域也是不一样的,所以这里结合C语言的各种变量的作用域就可以更加方便理解所谓的环境变量了吧,同样它也是一段常驻的内存标识。
我们在linux中断中输入printenv命令即可查看所有的环境变量:
其中比较常用的是环境变量PATH,可以使用printenv PATH或者echo $PATH来单独查看,如下图所示,两者完全一致:
PATH环境变量以冒号 : 进行分割,形成了多个路径,当用户输入相应的命令便会依次从上面的路径中查询程序来执行。
比如:在终端中输入ls命令行,Shell会从PATH变量中存储的路径来查找ls执行程序来运行。
03 修改环境变量还是把上面的图拿过来:
修改环境变量大体分为两种办法 :
1 ) 使用export命令行直接导入;
2 ) 将export命令行保存到如上图所示的对应的文件中适时进行加载导入。
对于命令导入的办法是临时的,而保存到对应的文件中可以覆盖其作用域生效。
方法1示例:1、使用命令行"export 环境变量=新加入值:$环境变量",如下图所示,这样就加入了新的路径。
2、当退出该终端重新进入,那么之前使用export临时加入的环境变量就会消失。
3、这种直接使用命令行的方式,可以立即生效,并且仅对当前用户起作用,当重新打开终端会失效。
方法2示例:1、相对命令行方式,其实仅仅只是把export命令行放到了相应的文件中进行加载使用,我们进入到家目录,然后编辑隐藏文件.bashrc,然后把命令行追加到最后,如下图所示:
2、加入到文件并保存以后,其环境变量不会立即生效,需要使用source命令执行一下,才能够生效。
3、重新启动终端,如下图所示,其环境变量依然存在,因为~/.bashrc包含shell的bash信息,当登录以及每次打开新的shell时,该文件被读取,相应的命令也就会重新执行。
4、上面修改.bashrc仅仅只是在shell启动时被加载,在其被加载前执行的程序均无效,所以就有不同作用域,比如环境变量保存在~/.profile中,那么图形界面启动程序就可以访问到设置的环境变量,而设置到~/.bashrc中的便无法被图形界面启动程序访问。
5、对于普通用户其实将环境变量在.bashrc文件中操作即可,如果修改了其他作用域更广的配置,会影响到其他用户,同时这些配置文件也是逐级覆盖的,启动过程中后面加载的文件会覆盖前面相同的配置信息。
最 后好了,这里小哥就介绍了一下Linux中环境变量的理解与使用,以后在安装编译器,或者make命令等等很多地方都会设计到环境变量的操作,希望本文能够对你有帮助!