理解环境变量

本文探讨了环境变量在操作系统中的作用,如何查看和设置,以及它们如何在进程间传递。环境变量提供了一种全局的方式来执行命令,允许不带路径地调用程序。通过示例解释了如何使用getenv函数来访问环境变量,并强调了环境变量在子进程中的继承特性,而本地变量不具备这种属性。此外,还提到了不同用户间的HOME变量差异,以及如何通过env和set命令查看系统和本地变量。
摘要由CSDN通过智能技术生成

先问问自己:为什么系统的命令不用带路径呢?
环境变量

1.查看环境变量

直接echo PATH不可以,要加$符号
系统查找的时候,以冒号为分隔符号,找不到第一个就去找第二个,找不到第二个就去找第三个,以此类推,找到了就直接跑起来
在这里插入图片描述
导入环境变量
记住用这种方式在后面添加,如果把之前的都修改了,也不用担心,这只是在内存级别的修改,只需要重新登录服务器即可
在这里插入图片描述
配置过后,我们之前用./myproc当前路径的方式可以跑,直接myproc现在也可以跑了
在这里插入图片描述
还有一种环境变量HOME
为什么不同用户pwd的结果是不同的呢,原因就是环境变量HOME的值不同
在这里插入图片描述
在这里插入图片描述
SHELL环境变量
在这里插入图片描述
查看所有的环境变量用指令env
在这里插入图片描述
环境变量的本质是 OS在内存/磁盘文件中开辟的空间,用来保存系统相关的数据

2.环境变量的相关命令

系统上还存在一种变量,只在此次登录(session)有效,叫做本地变量
在这里插入图片描述
在这里插入图片描述
env显示所有环境变量

set命令,显示本地变量和环境变量
在这里插入图片描述
说明我们自己定义的变量是本地变量
导入环境变量过后,就变成全局变量了
unset是取消环境变量
在这里插入图片描述

3.环境变量的组织/获取方式

在这里插入图片描述

在这里插入图片描述
写这个对应关系有个什么用
指令有很多选项,用来完成同一个指令的不同子功能
写一个小程序myproc展示
在这里插入图片描述
在这里插入图片描述
看完这个,对ls -a -l -n 之类的指令是否有了更深的了解呢
指令有很多选项,用来完成同一个指令的不同子功能
这才是命令行参数的意义!
我们这里实现的和env的结果实际上是差不多的
在这里插入图片描述

在这里插入图片描述
小问题:函数如果没有参数,可以传参吗?
可以的!
这里的environ可以看作是一个二维数组
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
这里的environ是一个外部指针,是由系统提供的,系统会自动帮你去找好环境变量的位置,让你去访问
上面的其实都不是最常用的方式
最常用的方式使用getenv这个函数
在这里插入图片描述在这里插入图片描述

4.环境变量具有全局属性

在这里插入图片描述
我们在运行一个程序的时候,可以发现,会不断产生新的进程,因此每一次的pid都是不同的,然而ppid都是相同的
在这里插入图片描述
我们可以发现,这个父进程就是bash
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

当前的理解,环境变量具有全局属性的本质:环境变量可以被子进程继承下去(这边这个本地变量就不能被继承)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值