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

推荐方法二

