16.环境变量与地址空间

Linux系统先运行startup main函数也被startup函数调用,

第二个指向一个个字符串所对应的地址,

命令行输入时候相当于个字符串,空格是分隔符,argc是字符串个数,argv是字符串数组,放完之后用null结尾,

我们以前用的命令和选项,命令行参数是为了让一个程序能够通过选项可以实现不同的子功能,

运行自己的命令要带./系统命令不用带这是为什么

因为系统当中存在环境变量自动取usr/bin,粘到usr/bin目录就行,但代码最好不要放进系统,这个环境变量叫path,用来标识一串路径,告诉系统去那些路径下找二进制文件,查看所有环境变量用env,通过$可以获取单个环境变量的内容,

这个内容就是排着去这几个路径去找命令,就是把这一段字符串截出来当做ls的前缀/ls,

要是把自己的路径添加到这个环境变量内那么就可以直接运行,

这是覆盖了所有地址,这只是证明了这个原理,这是内存级的,重登就恢复了,应该这么回复:

一进系统,就会创建一个bash进程,这个进程读取所有的环境变量信息,new一块空间形成一个二维数组,bash进程内部形成一个环境变量表一个一个填写到这个环境变量表中,所以bash内部维护了这个表,存在bash进程的上下文里,每个环境变量就是个字符串,每个指针指向每个字符串,输入命令行时先被

bash拿到, 第一张表是命令行参数表第二张是环境变量表,bash先获得环境变量表然后构建当前命令行参数表,然后命令行参数表把这个命令解析出来了,拿着这个命令ls再去pash根据path一个个地址去找,再就创建子进程。

查看配置文件

cd ~ ls -al vim .bashrc vim bash profile 配置文件的内容就是bash profile要求用户加载bashrc 要求加载etc下的,系统登录时产生bash进程,读取这两个文件内容,创建环境变量

构建环境变量时把我的路径添加进来,那么重新登陆,就可以去我的路径下找,这样每次登陆这个path环境变量都有我这个地址

HOME

echo $HOME

当前用户的家目录,登录时自动将HOME/。。存入HOME环境变量变量,每次cd ~就把这个换下来,用户推出时候,内存级环境变量就退出

SHELL

echo $SHELL

记录当前用户登录时用的是哪个版本的shell,

echo $USER 当前用户是谁

env,su之后不更新用户信息,su -就更新环境变量信息

ehco $HISTSIZE 最多记录多少条历史命令,history wc -l

HOSTNAME 当前主机主机名

SSH_TTY 当前是那个设备

PWD 当前工作路径

OLDPWD (cd -)上次路径来回切换

新增环境变量表

取消环境变量

unset MYENV

代码获得环境变量

父进程把参数传过来的,入口函数是start函数,调用main,首先扫描main函数几个参数,count设成几,看板书,

自己导入的环境变量也可以被子进程继承,

方法二:man getenv

设计一个程序只能我自己跑

只有bash知道当前登录的用户信息,又把环境变量传给子进程,所以子进程根据这个可以身份识别。

为什么环境变量可以被子进程继承

子进程可以结合环境变量进行个性化操作。

man environ

推荐方法二

相关推荐
liuyouzhang2 小时前
将基于Archery的web数据库审计查询平台封装为jdbc接口的可行性研究(基于AI)
前端·数据库
码事漫谈7 小时前
大模型输出的“隐性结构塌缩”问题及对策
前端·后端
这儿有一堆花8 小时前
前端三件套真的落后了吗?揭开现代 Web 开发的底层逻辑
前端·javascript·css·html5
.Cnn8 小时前
JavaScript 前端基础笔记(网页交互核心)
前端·javascript·笔记·交互
醉酒的李白、9 小时前
Vue3 组件通信本质:Props 下发,Emits 回传
前端·javascript·vue.js
anOnion9 小时前
构建无障碍组件之Window Splitter Pattern
前端·html·交互设计
NotFound4869 小时前
实战分享Python爬虫,如何实现高效解析 Web of Science 文献数据并导出 CSV
前端·爬虫·python
徐小夕9 小时前
PDF无限制预览!Jit-Viewer V1.5.0开源文档预览神器正式发布
前端·vue.js·github
WangJunXiang610 小时前
Haproxy搭建Web群集
前端
吴声子夜歌10 小时前
Vue.js——自定义指令
前端·vue.js·flutter