《Linux篇》命令行参数与环境变量

文章目录

命令行参数

Q:main函数可以有参数吗?

A:有!!!

我们来看看里面的参数是什么?

为什么要这么设计了?-》

命令行参数的意义:我们用到的Linux指令,大多数都是C语言写的!

  • 命令行参数至少有一个
  • 进程对应的程序名字,就是argv[0]
  • 有几个子串,argc就是几
  • 我们的命令行参数会被父进程维护,维护成一个数组

    必须以NULL结尾!!!

环境变量

环境变量定义:是系统级别的一些全局变量,具备不同的用途。

环境变量(environment variables)⼀般是指在操作系统中⽤来指定操作系统运⾏环境的⼀些参数。如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪⾥,但是照样可以链接成功,⽣成可执⾏程序,原因就是有相关环境变量帮助编译器进⾏查找。环境变量通常具有某些特殊⽤途,还有在系统当中通常具有全局特性。

我们之前在使用gcc编译我们的代码时,会形成可重定位的可执行文件,但是我们必须带上当前的路径,例如 ./a.out,才可以执行,直接输入 a.out会报错,如下:

我们输入命令,例如a.out他会默认去usr/bin路径下去找!!!-》因为usr/bin路径是默认在系统的PATH当中的!!!操作系统查找可执行命令,是在环境变量PATH中查找的!!!

查看环境变量:

以冒号为分隔符,如果我们输入的命令都没有找到,就会报错了。

我们可以把我们的路径添加到环境变量中去,如下:

之前我们学过which来搜索命令的位置,他就是通过PATH来找的:

使用env命令来看当前所有的环境变量:

如何获取环境变量?

方法一:main函数获取


方法二:通过函数获取单个换个环境变量(getenv)


方法三:C语言获取(C语言提供的全局环境变量指针)



环境变量通常具有全局属性,可以被子进程继承下去。

Q:为什么要有环境变量呢?

A:不同的环境变量会有不同的用途。比如我们可以写一个只有自己可以执行的程序。

getcwd也是一个系统调用。

所以,echo不会创建子进程,而是由bash自己执行!!!

相关推荐
她说彩礼65万10 小时前
C语言 文件
linux·服务器·c语言
txg66610 小时前
自动驾驶领域热点简报(2026-04-26 ~ 2026-05-03)
linux·人工智能·自动驾驶
二哈赛车手10 小时前
新人笔记---ES和kibana启动问题以及一些常用的linux的错误排查方法,以及ES,数据库泄密解决方案[超详细]
java·linux·数据库·spring boot·笔记·elasticsearch
嵌入式×边缘AI:打怪升级日志11 小时前
嵌入式Linux开发核心自测题(全系列精华浓缩)
java·linux·运维
嵌入式×边缘AI:打怪升级日志11 小时前
TinaSDK Linux Kernel 基本使用(全志T113开发板)
linux·运维·服务器
嵌入式×边缘AI:打怪升级日志11 小时前
Linux内核基础完全入门指南(理论篇)
linux·运维·服务器
Muyuan199811 小时前
28.Paper RAG Agent 开发记录:修复 LLM Rerank 的解析、Fallback 与可验证性
linux·人工智能·windows·python·django·fastapi
比昨天多敲两行11 小时前
Linux进程概念
linux·运维·服务器
HLC++12 小时前
Linux的基本指令+权限+基础开发工具
linux·运维·服务器
一拳一个娘娘腔12 小时前
红队与蓝队视角:现代网络安全攻防中的Linux命令深度解析
linux·安全