进程第四章:环境变量

devtools/2024/10/9 9:14:59/

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;

}


http://www.ppmy.cn/devtools/121655.html

相关文章

如何使用工具删除 iPhone 上的图片背景

在 iPhone 上删除背景图像变得简单易行。感谢最近 iOS 更新中引入的新功能。如今&#xff0c;iOS 用户现在可以毫不费力地删除背景&#xff0c;而无需复杂的应用程序。在这篇文章中&#xff0c;您将学习如何使用各种方法去除 iPhone 上的背景。这可确保您可以选择最适合您偏好的…

探索云计算中的 Serverless 架构:未来的计算范式?

目录 引言 一、Serverless架构概览 二、Serverless 架构的优势 三、Serverless架构的挑战 四、Serverless架构的未来展望 五、结论 引言 在当今快速发展的 IT 行业中&#xff0c;云计算无疑占据了举足轻重的地位。随着技术的不断演进&#xff0c;云计算的一个新兴分支——…

jQuery——对象的过滤

在 jQuery 对象中的元素对象数组中过滤出一部分元素来 ① first&#xff08;&#xff09; ② last&#xff08;&#xff09; ③ eq&#xff08;index / -index&#xff09; ④ filter&#xff08;selector&#xff09;&#xff1a;对当前元素提要求 ⑤ not&#xff08;sel…

住宅IP是不会发生变化的吗?

在日常生活中&#xff0c;我们的设备&#xff08;如电脑、手机、智能家居设备等&#xff09;都依赖于IP地址与互联网进行通信。IP地址相当于设备在网络中的身份标识&#xff0c;用于在互联网上接收和发送信息。住宅IP则是为家庭网络分配的IP地址。那么&#xff0c;住宅IP是否会…

IDEA中用过git之后文件名颜色全变红

在File->Settings->Version Control里点击左下角的号&#xff0c; 选择<none> 之后点击Apply即可恢复之前的颜色

【深度学习】交叉熵

交叉熵&#xff08;Cross-Entropy&#xff09;是信息论中的一个重要概念&#xff0c;也是在机器学习和深度学习中用于分类任务的常见损失函数。它衡量的是两个概率分布之间的差异&#xff0c;特别是模型的预测概率分布与真实分布的差异。 交叉熵最初是从信息论引入的&#xff0…

配置Scrapy项目

配置Scrapy项目是一个涉及多个步骤的过程&#xff0c;在上一篇博客中已经写了安装Scrapy、创建Scrapy项目的步骤。 接下来应该定义Item类、编写爬虫程序以及配置settings.py文件等。以下是一个详细的配置Scrapy项目的步骤&#xff1a; 一、定义Item类 在项目目录下…

项目配置说明

文章目录 一、下载 vscode 并安装相应扩展1.1 下载 vscode1.2 安装扩展 二、git 项目三、git 提交流程3.1 确定要提交的代码 四、git 拉新流程 一、下载 vscode 并安装相应扩展 1.1 下载 vscode vscode 我已经发群里了&#xff0c;或者自己去官网下载也行 1.2 安装扩展 打开…