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

推荐方法二

相关推荐
计算机魔术师27 分钟前
烧掉2780亿美元还不够?OpenAI的资本豪赌让人头皮发麻
前端
IT_陈寒1 小时前
Java线程池用错参数,我的服务居然悄悄崩溃了
前端·人工智能·后端
卡布鲁1 小时前
React useMemo 与 useCallback 完全指南:原理、场景与避坑
前端·react.js
碳基修炼2 小时前
排查记:本地 devServer 是 http,浏览器却把 302 重定向升级成了 https
前端·http
步行cgn2 小时前
Spring p 命名空间注入详解
java·前端·spring
何何____2 小时前
Vue 生命周期详解
前端·javascript
江米小枣tonylua2 小时前
TypeScript 全面の拥抱 !Prisma 8 + Electron 升级实战
前端
闪耀之光M782 小时前
npm命令解析
前端
咸鱼老弟3 小时前
AI Agent 的"自主性悖论"——为什么给它的自由度越大,越要配一套更硬的护栏
前端·人工智能
默_笙3 小时前
💫 闭包是个背包:拆解小米前端面试题里的三道"闭包陷阱"
前端·javascript·面试