当前位置: 首页 > news >正文

Linux环境变量个人笔记

基本概念

环境变量(environment variables)是用来指定操作系统运行环境的一些参数。我们在编写C/C++代码的时候,在链接时虽然不知道链接的动态静态库在哪里,但照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。 环境变量在系统中具有全局特性

常见环境变量

PATH: 指定命令的搜索路径。我们平时直接输入pwd,而不需要带上这个命令的地址,是因为pwd指令的地址已经被存储到PATH当中,系统会自动遍历PATH中的地址寻找pwd。

HOME: 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)

SHELL: 当前Shell,它的值通常是/bin/bash


使用”echo $环境变量名“打印环境变量的信息


分别使用两个不同的用户对HOME进行测试


环境变量有关指令

echo: 显示某个环境变量值

export:设置一个新的环境变量

env: 显示所有环境变量

unset: 清除环境变量 HOME 的关系

set: 显示本地定义的shell变量和环境变量

环境变量的组织方式

每个程序都会收到一张环境表,环境表是一个字符指针数组,每个指针指向一个以’\0’结尾的环境字符串。这张环境表是通过命令行解析得到的。

命令行解析:

命令其实是由程序实现的,是程序就会有main函数,而main函数其实是可以有参数的。对于操作系统而言,我们输入的命令就是字符串,命令行会被Shell拆散成一个个字符串,再把这些字符串传给main函数,这就是命令行解析

命令行解析具体工作流程

在终端输入./test并回车时,Shell 做了以下几件事:

  • 读取输入:Shell 读取你输入的字符串./test
  • 解析命令行:Shell 通过空格分割字符串,得到参数列表。
    • argc = 1(只有一个参数./test)。
    • argv[0] = "./test"
  • 查找可执行文件
    • 因为命令以./开头,Shell 直接定位到当前目录下的test文件,跳过 PATH 搜索
    • 创建子进程并执行
      • Shell 调用fork()创建子进程。
      • 子进程调用execve("./test", argv, env)
      • execve是系统调用,它会:
        • 加载./test程序到内存。
        • 将 Shell 的环境变量(env)复制一份给新程序。
        • 跳转到test程序的main函数入口

这里补充一下main函数的参数形式:无参数带命令行参数,此外还有带环境变量参数

继续上面的例子,假如我们输入的是./test时,argc是1,因为接收到一个命令,然后argv[0]存放的就是指向./test地址字符串的指针。

获取环境变量的方式

下面代码演示获取环境变量的方式:


用字符指针数组打印所有环境变量


用Printenv来查看所有环境变量


使用getenv()函数在程序中获取环境变量并打印


环境变量的全局性

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

下面代码示例在未向shell中添加自定义环境变量时,子进程提示无法找到MYENV,向shell中添加自定义环境变量后,子进程能够找到该环境变量,从而证明了环境变量的全局属性

http://www.gsyq.cn/news/1492874.html

相关文章:

  • 如何在5分钟内快速上手mgmt配置管理:终极简单指南
  • i.MX RT1020电气特性深度解析:从GPIO阻抗到高速接口时序设计
  • AI Agent 学习路线:资深后端/大数据工程师必备能力地图(收藏版)
  • WarcraftHelper:让经典魔兽争霸III焕发新生的终极优化方案
  • 遗传算法工业级实现:SBX交叉与自适应变异工程指南
  • C#写的Steam多账号SSFN快速加载工具,免输密码和手机验证码直接登录
  • Python金融分析终极指南:mootdx通达信数据接口完全免费方案
  • Villus完全指南:轻量级GraphQL客户端如何革新Vue.js数据请求
  • 极简决策法
  • C++哈希学习
  • 2026 年宜宾厨卫屋面地下室漏水测评,吉修匠 99.8 分五星榜首 - 吉修匠
  • 嵌入式硬件设计实战:从数据手册解读到低功耗系统实现
  • 学到了:如何通过蓝牙从手机向电脑传文件,尤其是快捷方式,超赞!
  • TIE投稿避坑指南:关于页数限制、AE角色和Decision结果的5个关键细节
  • i.MX RT1020高速接口时序设计:HS200与MII/RMII硬件调试实战
  • 069、断点续训 Resume 源码流程:Checkpoint 的保存粒度与恢复状态机
  • Python房价预测教学实践包:清洗数据+可运行代码+全流程图+详细说明文档
  • Polar-reverse
  • QDKT15-1把功能/应用封装为 Agent 可用的 Skill 技能
  • 嵌入式硬件设计实战:从Kinetis K22F电气特性到低功耗模式深度解析
  • Next.js 异步表单处理的正确姿势
  • 2026年6月最新版运城第三方CMACNAS甲醛检测治理口碑名单:万清CMA检测中心等5家深度测评 - 一休咨询
  • 抖音批量下载工具:3步解决内容创作者90%的素材采集难题
  • 2026年玻璃钢水渠厂家推荐榜:农用灌溉/排水沟/u型水渠/耐老化玻璃钢水渠源头厂家与优质品牌精选手册 - 企业推荐官【官方】
  • 基于 RAG 完整项目实践 —— 智能客服
  • 2026年 硝酸钠源头厂家推荐榜单:工业型/熔盐型/玻璃搪瓷/冶金热处理及农用硝酸钠品牌实力解析 - 品牌发掘
  • 告别网盘限速烦恼:这款开源工具让你下载速度飞起来
  • WorkshopDL终极指南:免费跨平台Steam创意工坊模组下载器
  • 网约车聚合平台技术选型:地图服务选错,直接拖慢上线 3 个月
  • 西青区黄金变现哪家好 收的顶免费鉴定适配各类金饰 - 奢侈品回收评测