文章目录
- 前言
- 环境变量
- 常见环境变量:
- 设置环境变量:
- 和环境变量相关的命令:
- 环境变量的组织方式:
- 获取环境变量
- 环境变量可以被子进程继承
- 环境变量总结
- main函数的参数
前言
大家好久不见,今天分享的内容是环境变量和main函数参数。
环境变量
环境变量一般指在操作系统中用来指定操作系统运行环境的一些参数
在编写C/C++代码时,链接的时候,并不知道动态静态库在哪里,但是依然可以链接成功生成可执行程序,原因就是有相关环境变量帮助编译器帮助查找。
常见环境变量:
- PATH : 指定命令的搜索路径
- HOME : 指定用户的主工作目录(即用户登陆到Linux系统- 中时,默认的目录)
- SHELL : 当前Shell,它的值通常是/bin/bash。
设置环境变量:
export PATH=路径
export PATH=$PATH:路径
需要注意前者会将所有全局变量修改为路径,后者会添加这一段路径进入环境变量。
在Linux中,把可执行程序,拷贝到系统默认路径下,让我们可以直接访问的方式------相当于Linux下软件的安装!
注:如果不小心误操作将全局变量修改为路径,退出shell重新启动即可。
和环境变量相关的命令:
1.echo 显示某个环境变量的值
2.export 设置一个新的环境变量
3.env 显示所有环境变量
4.unset 清楚环境变量
5.set 显示本地定义的shell变量和环境变量
环境变量的组织方式:
环境变量以如图所以一张表的方式存储(是bash制作了这张表),环境表是一个字符指针数组,每个指针指向一个以’\0’结尾的环境字符串。
获取环境变量
我们可以使用main函数的第三个参数char* env[]来获取,也可以使用全局变量environ来获取(使用前先声明:extern char** environ),还可以使用系统调用(getenv和putenv)获取。
一般通过函数获取是主流。
环境变量可以被子进程继承
我们采用这样的方式来检测子进程是否能继承父进程的环境变量
结果如下:
由此我们可以得出,环境变量是可以被子进程继承下去的。
环境变量总结
1.环境变量本身就是一个内存级的表,这张表由用户在登录系统的时候,进程给特定用户形成属于自己的环境变量表
2.环境变量的每一个都有自己的用途:有的进行路径查找,有的身份验证,有的动态查找,有的确认当前路径
3.每一个元素都是kv的
环境变量从哪里来呢?系统的相关配置文件中读取得来的
main函数的参数
main函数可以传入三个参数:
int argc, char *argv[], char *env[],我们分别来介绍。
*char env[] :
之所以要先介绍第三个参数,是因为env就是上面提到的环境表,我们可以打印一下这个数组:
int main(int argc,char* argv[],char* env[])
{
for(int i = 0;env[i];i++)
{
printf("env[%d]--->%s\n",i,env[i]);
}
}
结果如下:
int main(int argc, char *argv[])
{
extern char **environ;
int i = 0;
for(; environ[i]; i++)
{
printf("%s\n", environ[i]);
}
return 0;
}
命令行选项:
int argc :
显示你输入了几个参数
char argv[]:
存储你输入的这几个参数
演示如下:
事实上,我们的命令拥有不同的选项,就是通过这种方式来实现的。
到这里,本文就结束了,如果你觉得有所帮助,给博主点个关注,谢谢!