欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

进程优先级、命令行参数和环境变量 - IV、环境变量

最编程 2024-10-03 15:37:51
...

1. 基本概念

1. 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数。
2. 如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。
3. 环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性

2. 常见环境变量

PATH : 指定命令的搜索路径
HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)
SHELL : 当前Shell,它的值通是/bin/bash

我们以PATH变量为例,对环境变量进行理解

查看环境变量里的内容,使用指令:
echo $环境变量

在这里插入图片描述
系统中很多的配置,在我们登录Linux系统的时候,已经被加载到了bash进程中(内存)。
查看PATH环境变量,会出现很多路径,这些路径以冒(:)号为分隔符。

整个长串,表示的是: bash在执行命令的时候,因为要把命令的二进制文件加载到内存,所以需要先找到命令,这一长串就是bash内部维护的命令的默认搜索路径(会依次搜索)

所以现在我们可以知道,为什么在使用指令(1s,pwd…)的时候可以不用加路径,因为它们所在的路径 /usr/bin 是在 bash 的环境变量中的

在这里插入图片描述
这里演示方式2:
在这里插入图片描述

结论:
1. 直接对PATH变量进行赋值会直接覆盖原有的内容!
2.P ATH这种环境变量是内存级的,如果不小心直接把它覆盖了,不用担心,关闭Xshe1l,重新启动又会恢复!!

正确的把指定路径添加到环境变量的操作:
在这里插入图片描述

注意:
(1) 最开始的环境变量不是在内存中,而是在系统的对应的配置文件中!
(2) 在我们登录Linux系统的时候,这些文件会被加载到了bash进程的上下文中,所以要想永久修改环境变量,就要修改这些配置文件!

在这里插入图片描述

其他环境变量的使用:

在这里插入图片描述

3. 查看环境变量

查看系统的所有环境变量,使用指令:env

在这里插入图片描述

也可以自定义环境变量:

导入一个环境变量,使用指令:
export 环境变量=内容

在这里插入图片描述

取消自定义环境变量,使用指令:
unset 环境变量

在这里插入图片描述

4. 对环境变量的再理解

首先看一下系统定义的一个全局环境变量:
在这里插入图片描述

用代码打印出环境变量:
在这里插入图片描述

结论:
那些环境变量,默认在bash内部,./myprocess
是bash的子进程,所以环境变量也是可以被子进程拿到的!!

原理如下:
在这里插入图片描述

结论:
bash进程启动的时候,默认会给我子进程形成两张表:
1.argv[]命令行参数表:来自用户输入的命令行
2.env[]环境变量表:来自0S的配置文件
bash通过各种方式把这两张表交给子进程!!!

所以,既然可以把命令行参数表传给main函数,那传环境变量表当然也可以。
第二种打印环境变量的方式:
(注:main函数最多传三个参数)

在这里插入图片描述

5. getenv和putenv

环境变量具有系统级的全局属性,因为环境变量本身会被子进程继承下去。

getenv: 根据环境变量名,直接拿到一个环境变量内容

使用man手册查看:
在这里插入图片描述

使用方式:
在这里插入图片描述

putenv: 改变或增加一个环境变量

在这里插入图片描述

6. 内建命令

子进程导入一些数据和对数据的修改是不会被父进程看见的,因为进程具有独立性。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述