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

推荐方法二

相关推荐
wulijuan8886661 小时前
Vue 组件的通信方式有哪些?
前端·javascript·vue.js
k09331 小时前
vue中view-design的校验及各种坑
前端·vue.js·view design
乘风gg2 小时前
企业级 Prompt 工程实战指南(下):构建可复用 Prompt 架构平台
前端·面试·架构
宇擎智脑科技2 小时前
AntV G6、X6 与 React Flow 深度对比:核心差异与大模型时代的应用场景分析
前端·人工智能·react.js·前端框架
山核桃&17°2 小时前
基于 Vue + Node.js 批处理bat脚本实现多环境一键部署
运维·前端·自动化
AC赳赳老秦2 小时前
云原生AI趋势:DeepSeek与云3.0架构协同,提升AI部署性能与可移植性
大数据·前端·人工智能·算法·云原生·架构·deepseek
程序哥聊面试2 小时前
React + TS 初始化新项目报错解决方法
前端·react.js·npm
codeGoogle2 小时前
2026 年 IM 怎么选?聊聊 4 家主流即时通讯方案的差异
android·前端·后端
C澒2 小时前
从单体到分布式:SLDS 2.0 全球物流履约网络架构演进之路
前端·分布式·架构·系统架构·教育电商·交通物流