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