简单了解一下环境变量(Linux)
当我们想要执行自己编写的程序时,必须使用相对路径 ”./程序名“,或者绝对路径
但是Linux自带的命令(命令就是文件),比如 ”ls“,就不用,系统会自动到 ”/user/bin/“路径下去找对应的文件
然后我们会发现,当我们将自己的程序放到 ”/user/bin/“ 路径下时,调用它也不再需要使用路径,这就引出来一个问题,操作系统怎么会知道自己应该到哪个路径下去找
Linux其中一个存在的环境变量(PATH),就是用来告诉Linux系统要去哪个路径找
使用 ”echo $PATH“ 命令,可以用来查询PATH里的内容

会发现它的内容是以冒号为分割符的一串路径
当用户想要想要执行一个可执行程序时,且该程序没有指明路径,Linux系统就会默认在这里一个一个找路径
也可以将自己的路径拷贝到PATH里(但是不建议,会污染数据)
不要直接赋值(PATH= ),会覆盖原先的路径
而是使用 "PATH=$PATH: 自己的路径"

这是内存级的操作,不会影响配置文件,关掉终端之后回来就会恢复了
环境变量是系统级的变量,变量名和变量内容,往往具有全局性
要么系统全局要么用户全局
env 查看所有环境变量

hostname: 主机名字
histsize: historysize 默认是1000
使用history 可以查看最近使用的1000条命令
shell:具体的命令行解释器,当前shell
oldpwd:记录最近的上一个路径
cd - 可以进入最近一次路径,就是依赖oldpwd
ssh_tty:每次登录的终端都是一个文件,由ssh_tty进行记录该文件名
user:记录当前用户
pwd:记录当前地址
home:记录家目录地址,cd~ 就是依赖它
人身上也有类似环境变量的东西:比如学历、毕业院校、身高,姓名,体重、籍贯等等 (类似变量名)
每个人变量名指向的变量内容是不相同的
变量内容可以改,变量本身存在于整个生命周期
环境变量和进程之间的关系
main函数是有参数的,最多能有三个参数,int argc,char *argv[],char *env[]
env传递了系统级别的所有环境变量表
本质是把环境变量表,传递给进程,通过env就能传递环境变量给到子进程了
另外一种方式让子进程获取环境变量:
语言会提供语言级的全局变量,就比如:errno 用来记录最近的错误信息
environ 也是一个语言级全局变量
environ:char**指针 ,指向环境变量表
还有一种方式,就是getenv
它是系统级别的全局变量
getenv:根据传来的环境变量名遍历环境遍历表,获得环境变量内容,如果没找到就返回NULL

如果环境变量是父进程给到子进程的,那么我们在Linux下创建的程序的环境变量是谁传递给我们的,是bash
命令行参数表和环境变量参数表,实际上就是两个数组,它存在于bash内部,是bash内部的数据
由于bash也是进程,存在于内存,所以这两张表都在内存当中,是临时的,内存级的
那么bash的环境变量,又是从哪里来的:是从Linux系统的配置文件来的
重新登录终端,就是重新加载配置文件到bash,然后形成环境变量表
