进程第四章:环境变量

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;

}

相关推荐
YancyYue4 小时前
ACL(Access Control List)访问控制列表
运维·服务器
GoppViper5 小时前
Linux 性能调优技巧
linux·运维·服务器
小叶学C++5 小时前
【Linux】Linux环境基础开发工具使用
linux
DC_BLOG6 小时前
VPN简述
运维·服务器·网络·ip
育种数据分析之放飞自我6 小时前
GWAS分析中显著位点如何注释基因:excel???
linux·算法·excel
linlinlove26 小时前
828华为云征文|华为云Flexus云服务器X实例部署 即时通讯IM聊天交友软件——高性能服务器实现120W并发连接
服务器·华为云·交友
小鹿( ﹡ˆoˆ﹡ )6 小时前
Python 并发新境界:探索 `multiprocessing` 模块的无限可能
linux·服务器·python
醉颜凉8 小时前
银河麒麟系统内存清理
运维·服务器·kylin·国产化·银河麒麟操作系统
Zfox_8 小时前
【Linux】进程地址空间、环境变量:从理论到实践(三)
java·linux·运维
邓草8 小时前
帝国CMS系统开启https后,无法登陆后台的原因和解决方法
linux·php·apache