1.基本概念
环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数
如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。
环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性
什么是环境变量?
大家会发现一个现象,假如我们编译好一个运行程序mytext,要运行它必须用./mytext运行,而系统默认的一些可运行程序指令 如 ls 这类就不需要,这就是因为ls在系统的默认环境变量中。
如何查看环境变量在哪里存放?
可以用echo $PATH

可以看到这些目录就是我的环境变量存放的位置,每个路径用:隔开
如何添加环境变量
我们现在有一个mymain的可运行程序

我们要运行它,需要用 ./mymain,而不能直接 mymain去运行,
这就是因为没有给mymain配置它的环境变量没有
我们可以用export PATH=$PATH: +绝对路径 来给mymain添加到环境变量中

然后就可以直接运行了:

当然也可直接将mymain的运行文件拷贝到已有的环境变量目录当中
在每次重启Xshell的时候环境变量会根据系统的默认值重新分配,所以不用怕环境变量搞乱了,重启就行!!!
2.常见环境变量
PATH : 指定命令的搜索路径
HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)
SHELL : 当前Shell,它的值通常是/bin/bash
如何查看系统的环境变量:env

环境变量是针对不同的人,不同的场景去使用的!!!
从代码环境去获取环境变量:
1.main函数可以带参数吗?可以带几个参数?
main函数是可以带参的,最多带三个参数:int argc , char *argv[ ] , char *envp[ ]
这个char *envp[ ]就是一个指针数组,最后一个以NULL结尾,表结构形式

编译程序进行打印:

得到:

envp就是一个表,是环境变量表!!!
2.environ


也可以得到
3.函数获取(主流)
利用环境变量来用函数实现pwd的功能:
利用函数getenv来获取


环境变量本质就是一个内存级的一张表,这张表由用户在登陆系统的时候,进行给特定用户形成属于自己的环境变量表。
环境变量中的每一个,都有自己的用途:有的是进行路径查找的,有的时进行身份认证的,有的时进行动态库查找的,有的是用来进行确认当前路经等等
每一个环境变量都有自己的特定应用场景
每一个元素都是kv的
环境变量对应的数据,都是从哪里来的呢?
环境变量是内存级的表!这是因为当我们重新登录的时候,之前修改的东西都会变回来。
环境变量是从系统大的相关配置文件中读取进来的!
cd ~ ls -al,其中我们的.bash_profile和.bashrc就是两个环境变量的配置脚本
3.命令行参数
int argc , char *argv[ ]这两个main函数的参数有什么用?


可以看到就能根据选项的不同,表现出不同的程序,这就叫做命令行参数