【lesson11】环境变量

文章目录

  • 环境变量的认识
  • main函数参数问题

环境变量的认识

我们知道我们运行自己写的可执行程序的时候,我们必须带路径才能运行,可是执行系统指令的时候不用路径就能运行。
演示:
【lesson11】环境变量_第1张图片
【lesson11】环境变量_第2张图片
问题:系统命令可以直接运行,自己写的程序必须带路径这是为什么?
因为系统有环境变量,而系统指令的路径在环境变量所维护的路径中,自己的可执行程序没有在环境变量所维护的路径
查看:
【lesson11】环境变量_第3张图片
所以当可执行程序运行,系统首先会在环境变量所维护的路径下查看有没有该可执行程序。
那么我们如何让自己的可执行程序不用带路径也能运行呢?
将该可执行程序的路径放入环境变量中。
演示:
【lesson11】环境变量_第4张图片
【lesson11】环境变量_第5张图片
我们看到,将路径放入环境变量中后,我们的可执行程序确实不用带路径就可以运行了。
PATH:指定命令的搜索路径。
env:查看系统中的所有环境变量。

演示:
【lesson11】环境变量_第6张图片

修改环境变量一般只在本次对话中有效,下次登入后就无效了。除非更改配置,但是不建议这种做法。

main函数参数问题

main函数最多有三种参数。
【lesson11】环境变量_第7张图片
我们看到最后的env指针数组,它是什么呢?
它就是环境变量,它是一个指针数组,指向各个环境变量
【lesson11】环境变量_第8张图片

代码演示:
【lesson11】环境变量_第9张图片

【lesson11】环境变量_第10张图片
我们可以看到确实用代码打印出了环境变量。
还有系统给我们提供的获取环境变量的接口数组指针也可以打印环境变量。
【lesson11】环境变量_第11张图片
【lesson11】环境变量_第12张图片

【lesson11】环境变量_第13张图片
getenv函数:获取环境变量
【lesson11】环境变量_第14张图片

演示:
【lesson11】环境变量_第15张图片
在这里插入图片描述
我们可以看到,我们用getenv获取了PATH路径。

进程的环境变量是谁传的?
从父进程那继承下来的。
所以bash的环境变量就是,所有进程的环境变量。

证明:
在bash中添加一个环境变量,看代码中能不能输出。
【lesson11】环境变量_第16张图片
【lesson11】环境变量_第17张图片
我们看到了确实获取了我们自定义的变量。

结论:子进程的环境变量是从父进程那继承来的,默认所有环境变量都会被子进程继承。

所以环境变量具有全局属性。但不是所有具有全局属性的变量都是环境变量。这里就不演示了。
set:打印所有全局变量。
【lesson11】环境变量_第18张图片
main函数的argc和argv叫做命令行参数。
argc是多少就觉定argv数组有几个参数

演示:
【lesson11】环境变量_第19张图片

【lesson11】环境变量_第20张图片
【lesson11】环境变量_第21张图片
有很多人肯或有疑问,这个有什么用?
我们学了ls指令,ls参数不同就会有不同的功能,那么是怎么实现的呢?
代码简单演示:
【lesson11】环境变量_第22张图片
【lesson11】环境变量_第23张图片

你可能感兴趣的:(linux,linux,运维,服务器)