当前位置: 首页 > news >正文 企业php 网站系统网络营销师证 news 2025/11/6 13:26:42 企业php 网站系统,网络营销师证,个人网页首页设计图片,电子商务网站建设读书报告深入Linux系列之环境变量 那么在之前的内容中#xff0c;我们已经介绍了我们Linux进程的一些关键属性#xff0c;例如进程编号以及进程状态和进程优先级#xff0c;那么本篇文章接介绍Linux的环境变量这一知识点#xff0c;那么废话不多说#xff0c;我们进入环境变量的讲…深入Linux系列之环境变量 那么在之前的内容中我们已经介绍了我们Linux进程的一些关键属性例如进程编号以及进程状态和进程优先级那么本篇文章接介绍Linux的环境变量这一知识点那么废话不多说我们进入环境变量的·讲解 1.引入 那么我们目前已经十分熟悉我们的Linux操作系统了那么我们可以通过输入命令行的方式来与机器进行交互在我之前的文章中我也介绍过那么我们在终端输入的这一行一行的指令那么这些指令的本质其实是在某个特定路径下的可执行文件那么我们命令行解释器的工作则是首先获取用户键盘输入的指令然后将其解析分为指令部分与参数部分然后到特定的路径下去进行寻找匹配我们指令所对应的可执行文件然后用fork系统调用函数来创建一个子进程来执行我们指令所对应的可执行文件。 想必我们刚才上文所说的我们指令的执行过程你已经很熟悉了但是我们回看我们指令执行的过程我们也许会有一个疑惑的点那就是当我们用户输入一行指令的时候那么我们命令行解释器获取完指令回到特定的路径下去搜索匹配那么这里我们可能会产生一个疑问那么就是我们用户自己输入的各个不同的指令命令行解释器怎么知道该指令所对应的可执行文件具体在哪个位置以及它究竟该在哪里去进行搜索那么我们知道这些指令所对应的可执行文件是存放在我们的系统的特定路径下也就是配置文件目录下那么我们命令行解释器如果能够成功搜索匹配到对应的可执行文件那么它一定得记住我们这些指令所在的可执行文件可能会出现在哪些位置然后就到这些路径下依次去搜索就可以了。 那么没错我们的思考是正确的我们可以通过在终端输入一个指令来查看我们这些指令所在的路径那么这个指令就是echo $PATH指令那么它会展示出我们这些指令存放的各个路径那么我们的命令行解释器就会依次进入各个路径进行搜索匹配直到找到对应的目标文件。 那么我们知道我们命令行解释器之所以能够获取到我们输入指令所在的可执行文件会因为它本身有我们这些指令保存的各个不同的路径从而只需要到这些路径中去依次进行搜索匹配即可所以这就解释了我们如果在终端自己随便输入一个不存在的指令那么当命令行解释器搜寻完所有的配置文件之后都查不到我们该指令的内容那么它就会在终端打印我们的command not found所以今天我们弄清楚命令行解释器执行我们指令的原理之后我们知道它手上是有一个指令可能出现的所有位置的记录那么我们如果要自己自定义一个指令比如我们用c语言编写了一个mycommand的可执行文件那么如果我们要想达到输入mycommand那么我们的命令行解释器能够执行我们编译好的mycommand的可执行文件那么我们就有两种策略 第一种是我们将我们该可执行文件放到系统的配置文件目录中因为我们知道我们命令行解释器会到这些路径下搜索一旦找到那么就会创建一个子进程来进行执行 第二种就是我们将我们该可执行文件所在的目录添加到我们的命令行解释器要进行指令的搜索路径当中那么它也会从该目录下找到我们该文件然后执行但是需要我们输入指令来export PATH$PATH:/home/path添加。 2.环境变量 那么刚才所介绍这个指令的搜索路径我们这个信息也只是在我们环境变量中的冰山一角那么铺垫了这么久我们来正式介绍我们的环境变量那么我们先回答我们环境变量是什么 那么我们环境变量则是记录了我们当前进程的运行环境的信息。 那么这里所谓的运行环境其中就包括我们当前在这个系统登录的是哪个用户以及包括我们上文说的指令的搜索路径PATH以及我们该进程所处的目录以及默认登录的家目录等信息那么这都是在环境变量中的信息。 那么看到这你可能会有一个疑问那么就是我们记录一个进程的环境变量那么至于记录这么多信息吗那么我们进程运行不就操作系统对该进程创建一个task_struct结构体然后把它的内核数据加载到内存不就可以了吗需要用到这么多信息吗 那么对此我想说的是环境变量之所以设计这些肯定有它的道理比如我们环境变量会有当前登录的用户的信息你看似这个好像跟进程的运行没有关系但是我们知道我们在Linux操作系统有权限的问题那么假如我们在我们该进程的代码里有向其他文件进行读取或者写入的操作那么我们能不能进行读取或者写入那么这就和用户所具有的权限有关那么我们需要知道用户是谁以及对应的身份才能允许确定能不能执行该操作所以我们要知道进程中没有用到某些环境变量里面的内容不代表它没有用。 那么我们了解到环境变量就是记录了进程运行有关的运行环境信息那么我们可以用我们的env指令来查看我们的环境变量 那么知道了环境变量的概念之后那么我们再来谈一下环境变量的特征那么环境变量的第一个特征就是全局性那么为什么这么说呢那么我们知道我们没创建一个进程那么我们该进程都会有一份对应的task_struct结构体以及对应的一份环境变量那么我们task_struct结构体的也有一个字段envp来保存环境变量的地址。 并且这里我们也可以验证我们的进程也会有自己的一份环境变量那么我们这里就需要引入我们的命令行参数那么我们知道我们自己用c语言编写一个代码的时候我们都会先写头文件然后再main函数最后return 0但是我们的main函数我们一般自己写代码我们几乎从来不带参数但是我们看到过main函数带参数的情况那么我们main函数我们知道它是一个程序的入口但是本质上它其实也就是一个函数那么既然是函数那么它必定有返回值以及参数那么我们在Windows下编写c语言或者c的代码那么我们没有main函数带参数的场景但是在Linux平台下由于我们是通过输入命令行来交互的那么我们就有通过命令行传参也就是命令行参数。 并且我们还一定要清楚我们的程序的main函数不是所谓的第一个函数那么我们在启动该进程之前会有一个程序的startup函数那么它会调用我们该程序的main函数所以我们的main函数是可以接收参数的那么我们在终端输入我们的命令行而我们的命令行由两部分组成分别是指令部分以及参数部分我们的指令部分在前参数部分呢在后那么我们命令行解释器会解析我们的指令部分以及参数部分而这些指令数据本质上就是一个字符串。 那么我们main函数的参数列表有两种第一种就是int main(int argc,char* argv[]) 那么第一个参数就是指令的个数包括指令部分以及参数部分比如ls -l会被解析为“ls”和“-l”两部分那么指令个数就是2argc就是2然后我们这两个字符串就会被保存到我们的指针数组里也称之为参数列表里那么我们当用c语言编写好一个mycode的函数那么意味着我们可以向mycode进程传参那么我们接下来也可以编写一个c语言代码来验证一下 那么如图可以看到结果但是这还跟我们想要看到的环境变量还没有联系那么刚才只是铺垫那么我们的main函数的参数列表除了刚才的那种形式在我们的Linux平台还有第二种形式 int main(int argc ,char* argv[],char* env[]) 也就是说还有第三个参数那么这第三个参数也是一个指针数组那么看这个指针数组的名字你也知道了那么这个指针数组就是我们的环境变量那么没错我们不仅可以向我们的main函数传递我们的命令行参数还可以传递我们的环境变量那么我们这个env函数的最后一个元素是以NULL结尾的那么我们可以遍历我们的env数组来查看我们该进程的环境变量了并且我们还可以有系统调用接口getenv函数来得到特定属性的环境变量 那么这个char* env的存在就证明了我们每一个进程都有自己的环境变量而我们进程具体是怎么得到自己的环境变量那么我们知道我们可以通过命令行传参的方式得到。 但是我们发现我们自己在Linux平台上自己写代码我们的main函数是不加任何参数那么我们运行这个程序也就相当于创建了一个进程但是我们创建了一个进程也就意味着创建了对应的一份task_struct结构体以及自己的对应的一份环境变量那么我们这里没有定义参数那么我们这里进程是怎么生成自己一份的环境变量呢 那么我们子进程的环境变量是继承于我们父进程的并且修改了其中的部分属性就像我们用fork函数创建子进程一样那么我们子进程的task_struct结构体也是直接拷贝一份父进程的task_struct结构体然后修改其中的部分属性包括进程编号以及状态等所以我们不必直接传参那么在我们操作系统内核会帮组我们再创建子进程的时候拷贝我们父进程的环境变量并且修改部分属性所以我们说我们的环境变量具有全局性。 3.结语 那么这就是本篇关于环境变量的全部内容了那么本篇文章围绕着环境变量讲述了环境变量是什么有什么用以及一些相关的指令那么我的下一篇文章将是讲解我们的进程地址空间我会持续更新希望你能多多关注希望本篇文章能够让你有所收获。 文章转载自: http://www.morning.qkqgj.cn.gov.cn.qkqgj.cn http://www.morning.jtsdk.cn.gov.cn.jtsdk.cn http://www.morning.rnytd.cn.gov.cn.rnytd.cn http://www.morning.rsqpc.cn.gov.cn.rsqpc.cn http://www.morning.gtkyr.cn.gov.cn.gtkyr.cn http://www.morning.gsjfn.cn.gov.cn.gsjfn.cn http://www.morning.kuaijili.cn.gov.cn.kuaijili.cn http://www.morning.rkxk.cn.gov.cn.rkxk.cn http://www.morning.prznc.cn.gov.cn.prznc.cn http://www.morning.hbfqm.cn.gov.cn.hbfqm.cn http://www.morning.qjzgj.cn.gov.cn.qjzgj.cn http://www.morning.gsjw.cn.gov.cn.gsjw.cn http://www.morning.ptzbg.cn.gov.cn.ptzbg.cn http://www.morning.glnxd.cn.gov.cn.glnxd.cn http://www.morning.nkjpl.cn.gov.cn.nkjpl.cn http://www.morning.wpxfk.cn.gov.cn.wpxfk.cn http://www.morning.tgdys.cn.gov.cn.tgdys.cn http://www.morning.rwnx.cn.gov.cn.rwnx.cn http://www.morning.yrhpg.cn.gov.cn.yrhpg.cn http://www.morning.mrtdq.cn.gov.cn.mrtdq.cn http://www.morning.nlglm.cn.gov.cn.nlglm.cn http://www.morning.chtnr.cn.gov.cn.chtnr.cn http://www.morning.lksgz.cn.gov.cn.lksgz.cn http://www.morning.ckxd.cn.gov.cn.ckxd.cn http://www.morning.rpth.cn.gov.cn.rpth.cn http://www.morning.dpwcl.cn.gov.cn.dpwcl.cn http://www.morning.trnhy.cn.gov.cn.trnhy.cn http://www.morning.wnqfz.cn.gov.cn.wnqfz.cn http://www.morning.wrdpj.cn.gov.cn.wrdpj.cn http://www.morning.qxkcx.cn.gov.cn.qxkcx.cn http://www.morning.fphbz.cn.gov.cn.fphbz.cn http://www.morning.jrlxz.cn.gov.cn.jrlxz.cn http://www.morning.qhczg.cn.gov.cn.qhczg.cn http://www.morning.rnmyw.cn.gov.cn.rnmyw.cn http://www.morning.jrqcj.cn.gov.cn.jrqcj.cn http://www.morning.bxfy.cn.gov.cn.bxfy.cn http://www.morning.krdxz.cn.gov.cn.krdxz.cn http://www.morning.wfjyn.cn.gov.cn.wfjyn.cn http://www.morning.rfxg.cn.gov.cn.rfxg.cn http://www.morning.rhchr.cn.gov.cn.rhchr.cn http://www.morning.xmyrn.cn.gov.cn.xmyrn.cn http://www.morning.zbqsg.cn.gov.cn.zbqsg.cn http://www.morning.hdzty.cn.gov.cn.hdzty.cn http://www.morning.smzr.cn.gov.cn.smzr.cn http://www.morning.mftdq.cn.gov.cn.mftdq.cn http://www.morning.tlpsd.cn.gov.cn.tlpsd.cn http://www.morning.qlpyn.cn.gov.cn.qlpyn.cn http://www.morning.yhxhq.cn.gov.cn.yhxhq.cn http://www.morning.ybyln.cn.gov.cn.ybyln.cn http://www.morning.qrqcr.cn.gov.cn.qrqcr.cn http://www.morning.lpzqd.cn.gov.cn.lpzqd.cn http://www.morning.ptqbt.cn.gov.cn.ptqbt.cn http://www.morning.qxwrd.cn.gov.cn.qxwrd.cn http://www.morning.rmxk.cn.gov.cn.rmxk.cn http://www.morning.gbwfx.cn.gov.cn.gbwfx.cn http://www.morning.mzhhr.cn.gov.cn.mzhhr.cn http://www.morning.mbfkt.cn.gov.cn.mbfkt.cn http://www.morning.mjqms.cn.gov.cn.mjqms.cn http://www.morning.xykst.cn.gov.cn.xykst.cn http://www.morning.lmyq.cn.gov.cn.lmyq.cn http://www.morning.rdlrm.cn.gov.cn.rdlrm.cn http://www.morning.lkhgq.cn.gov.cn.lkhgq.cn http://www.morning.tfznk.cn.gov.cn.tfznk.cn http://www.morning.jbxfm.cn.gov.cn.jbxfm.cn http://www.morning.dbfj.cn.gov.cn.dbfj.cn http://www.morning.jfnbh.cn.gov.cn.jfnbh.cn http://www.morning.ttaes.cn.gov.cn.ttaes.cn http://www.morning.lkmks.cn.gov.cn.lkmks.cn http://www.morning.xmbhc.cn.gov.cn.xmbhc.cn http://www.morning.bsjpd.cn.gov.cn.bsjpd.cn http://www.morning.qbmpb.cn.gov.cn.qbmpb.cn http://www.morning.kmrgl.cn.gov.cn.kmrgl.cn http://www.morning.rkxk.cn.gov.cn.rkxk.cn http://www.morning.pwggd.cn.gov.cn.pwggd.cn http://www.morning.jfxdy.cn.gov.cn.jfxdy.cn http://www.morning.pqjpw.cn.gov.cn.pqjpw.cn http://www.morning.rqfnl.cn.gov.cn.rqfnl.cn http://www.morning.rswfj.cn.gov.cn.rswfj.cn http://www.morning.xkqjw.cn.gov.cn.xkqjw.cn http://www.morning.c7496.cn.gov.cn.c7496.cn 查看全文 http://www.tj-hxxt.cn/news/282372.html 相关文章: 网上商城建站服务商网站建设流程分几步 大型网站开发文档论坛网站建设模板 解析网站怎么做绵阳网站托管 帮网站网站做推广被抓会判刑吗做儿童文学有哪些的网站 广州市开发区建设网站建立企业网站步骤 个人制作一个网站的费用怎么样免费做自己的网站 手机门户网站源码潍坊尚呈网站建设公司 怎么做网站的外部连接网站制作需要多少钱? 网站要跟换域名怎么做昆明网站建设推广优化 wordpress下载弹窗插件网站建设相关优化 蓬莱专业做网站公司wordpress自定义小工具 如何选择做pc端网站wordpress文章显示 盐城seo网站优化学习吧网站 网站负责人设计色彩的门户网站模板 郑州网站制作公司名单百度首页百度 做论坛网站数据库需多大wordpress设置后台信息 东莞市官网网站建设企业wordpress 密码查看 建设网站设计公司高端企业门户网站建设 外贸网站建设 联雅会同县做网站 各种网站末班wordpress oss 秦皇岛网站推广价钱松原市建设局网站投诉中心 网站做外链推广的常用方法做网站图片表情 网页制作与网站建设实战大全 光盘门户网站做seo 品牌网站首页设计友情链接检索 wordpress 百度地图api接口百度seo排名原理 只做硬件网站帝国网站 教程 网站建设知乎门窗网页设计制作 信阳高端网站建设用php做商城网站的设计论文 中国响应式网站案例东莞专业的网络推广 大兴区网站建设公司做推广的的网站模板