进程第四章:环境变量

1.铺垫

1.1环境变量是系统提供的一组name=value形式的变量,不同的环境变量有不同的用户,通常具有全局属性

1.2多个可执行程序的运行,他们的环境变量的部分数据是不同的,比如说PWD等数据

1.3环境变量里的数据,多为K-V结构(name=value);也就是说找到key,就找到了value

1.4环境变量中存在用户名,用户日志,系统默认路径等信息,为权限的确认做了重要的保障

1.5我们所运行的进程,都是子进程;bash本身在启动的时候,会从操作系统的配置文件中读取环境变量信息;如果创建子进程,子进程会继承父进程的环境变量(系统交给父进程的环境变量)------所以环境变量具有全局属性;

1.6环境变量的传递:一是继承,由父进程传给子进程(所有进程都是操作系统的子进程,所以肯定都能传下去;每个运行的子进程肯定会走这条路;这是默认的);二是参数传递

1.Linux系统程序运行搜索路径

命令 echo $环境变量名称

echo $PATH //查看程序运行搜索路径PATH------会看到一堆的路径

echo:打印命令

$: 要输出的变量或文本,这里指变量;

PATH:Linux系统的指令搜索路径;以冒号作为分隔符,一串一串的绝对路径

2.添加路径到环境变量PATH

命令 PATH=$PATH:/home/qk/... //将自己的环境变量添加到系统中

PATH:是覆盖式写入,必须要把以前的环境变量加上,$PATH必须有

该环境变量会在重启时重新在shell中默认设置,也就是说新添加的环境变量会在重启后消失

3.查看环境变量

说是系统的环境变量------其实是用户信息及系统资源配置(环境变量及系统对应一系列提信息)

命令 env:查看从系统继承下来的所有的环境变量

此命令可以看到很多信息,比如用户自定义环境变量,系统环境变量,用户名,当前路径记录、编码格式、日志名称等信息;

命令 cd - 其实是执行的cd $OLDPWD

命令 history:查看历史的bash命令 HISTSIZE=1000最多纪录1000条bash指令

4.新增环境变量

命令: export myvalue=123456 //将myvalue=123456添加到环境变量中

5.删除环境变量

命令:unset myvalue //删除环境变量myvalue

6.本地变量&&内建命令

本地变量由来:需要一些只在bash内部有效的符号,但不需要子进程继承下去,所以有了本地变量的概念

命令 a=20 //a=20会显示在环境变量中,但不会被子进程继承;叫本地变量

命令:set //显示本地变量(本地定义的shell变量)和环境变量
本地变量只会在本BASH内有效,不会被子进程继承;
命令分为两种

1.常规命令:通过创建子进程完成

2.内建命令:bash不创建子进程,而是由自己亲自执行,类似于bash调用了自己写的,或者系统提供的函数

内建命令:cd、echo

7.putenv()函数

#include<stdlib.h>

int putenv(char *sting) //程序中获取环境变量

string:一个字符串;书写为 name=value

举例

char *string="myvalue=123456";

若环境变量中存在name,则修改value的值;若不存在name,则添加****name=value

由此,此函数为覆盖式写入

8**.getenv()函数**

#include<stdlib.h>

char *getenv(const char *name) //程序中获取环境变量

参数:是基于K-V模型的;const char *name中的name="环境变量中的key"

环境变量是一个基于K-V(name=value)的;

所以参数char *name="key";通过getenv()函数来寻找name值,返回value值

9.chdir()函数

#include<unistd.h>

int chdir(const char *path) //将正在运行的进程的工作目录改变成path中的路径;

10.命令行参数

命令行参数:

int main(int argc,char *argv[],char *env[]) //主函数带参

char *argv[]命令行参数表------数组的最后一个指针指向为NULL;

**char *env[] 环境变量列表------**数组的最后一个指针指向为NULL;

如果在main(int argc,char *argv[])函数不写char *env[]参数,那就是空,不会从上级程序的环境变量中拷下来;只能用getenv()函数获取

这两个数组可以使用for循环在程序中打印出来
mian()函数中(进程中)存在两张核心向量表

1.命令行参数表

2.环境变量表

11.第三方变量environ获取

C语言提供了第三方变量,可以在程序中获取;如下方使用

#include

int main(int argc, char *argv[])

{

extern char **environ;

i = 0;

for(; environ[i]; i++){

printf("%s\n", environ[i]);

}

return 0;

}

相关推荐
猫豆~36 分钟前
软件包管理——2day
linux·运维
大白菜13243 小时前
进程的信号
linux
XH-hui3 小时前
【打靶日记】群内靶机Secure
linux·网络安全
Shingmc33 小时前
【Linux】进程控制
linux·服务器·算法
视觉装置在笑7134 小时前
Shell 变量基础与进阶知识
linux·运维
Web极客码4 小时前
如何通过命令行工具检查 Linux 版本信息
linux·运维·服务器
Lynnxiaowen4 小时前
今天我们继续学习Kubernetes内容pod资源对象
运维·学习·容器·kubernetes·云计算
欢鸽儿4 小时前
Vitis】Linux 下彻底清除启动界面 Recent Workspaces 历史路径
linux·嵌入式硬件·fpga
繁华似锦respect5 小时前
C++ 智能指针底层实现深度解析
linux·开发语言·c++·设计模式·代理模式
远程软件小帮手5 小时前
云电脑挂机功能上线!边上班摸鱼边游戏多开教程
运维·服务器