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

推荐方法二

相关推荐
kyriewen6 小时前
微软用Go重写TypeScript编译器,速度提升10倍,网友:这是“背叛”还是“救赎”?
前端·typescript·ecmascript 6
Ceelog6 小时前
久坐党自救指南:屏幕前 8 小时,身体到底在经历什么
前端·后端
西陵6 小时前
Agent 为什么会陷入 Doom Loop?OpenClaw 的破解之道
前端·人工智能·ai编程
Hyyy7 小时前
普通前端续命周报——第2周
前端
wuxinyan1237 小时前
工业级大模型学习之路030:Streamlit 企业级智能体前端工作台
前端·学习·streamlit·智能体
修己xj7 小时前
告别无效刷屏!TrendRadar:最快30秒部署的开源热点助手,让你只看真正关心的新闻
前端
anOnion8 小时前
构建无障碍组件之Slider Pattern
前端·html·交互设计
云水一下8 小时前
JavaScript 从零基础到精通系列:前世今生与编程启蒙
前端·javascript
月亮邮递员6168 小时前
Markdown语法总结
开发语言·前端·javascript
Kurisu5758 小时前
雾锁王国修改器下载2026最新
前端·修改器代码