news 2026/7/10 23:02:00

Linux之进程(六)--环境变量

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux之进程(六)--环境变量

了解main的参数

我们直接来看一下这个函数

我们可以合理推测这个argc是记录命令行参数的的个数多少,而argv[]记录命令行的具体命令

我们来做一个小demo初步实现linux的命令行,留个印象

我们来思考一下为什么要有命令行参数

命令行参数本质上是为了实现一个命令,根据不同的子选项,来实现不同的子命令

什么是环境变量

环境变量(Environment Variable)​ 是操作系统或运行环境中用来存储系统配置信息、路径、行为开关的一类“全局变量”,可以被系统中的程序直接读取和使用。

从操作理解环境变量

为什么我们按ll可以查看文件夹内的信息,pwd怎么可以看当前的路径

为什么我们要这样./main.c才能运行这个二进制文件

因为系统并不知道二进制的位置,而pwd,ll,cd命令都在user/bin的文件夹下面,系统自动去哪个文件夹下面找可执行二进制文件.就是说

环境变量里记录的那些文件夹,操作系统挨个翻一遍,去找有没有这个名字的可执行文件。
如果找到了:就运行它。
如果找遍了都没找到:就会报错 command not found。它会把 PATH环境变量里记录的那些文件夹,挨个翻一遍,去找有没有这个名字的可执行文件。

其他可执行文件不知道位置,所以要加上文件的位置信息

更改环境变量

现在可以直接运行main.exe文件

但是之前的ls等指令都无法实行了

但是我们退出后会恢复,为了不丢失原来的系统指令,要用下面这种方法,但是下面也是零时的办法

永久写进去

echo 'export PATH=$PATH:/your/dir/here' >> ~/.bashrc
查看环境变量的方法

PATH环境变量:存储命令指令的文件的文件地址

环境变量改变了,原来的命令无法执行了,但是没有关系 ,我们退出在进就欧克

除了上面这种还有其他的环境变量

env可以看到所有的环境变量

user就会记录当前的使用者

pwd就会记录当前文件的所在位置

当然还有其他的,这里不做过多介绍

main的参数查看环境变量

main函数可以有多个参数,第三个是环境变量,为了没有警告我们对前两个参数也要操作.

env是二级指针数组,里面存有环境变量的内容,我们可以像访问数组一样去获取环境变量的地址

使用函数来获取getenv

getenv+你想要的环境变量,就可以获得你所需环境变量的值

环境变量底层传递的原理

子进程继承父进程的环境变量

我们让父进程打印完,在打印子进程

父进程和子进程的环境变量的数目是一样的,环境变量的内容也一致

子进程从父进程那里继承环境变量

当然子进程在fork一个进程,fork出来的进程也可以继承环境变量

子进程从bash那里继承环境变量,那bash里面的环境变量又是从哪里来的呢?

bash 自身的环境变量源头,全部来自系统 / 用户本地配置文件,并非凭空存在;同时能完美解释「临时改 PATH,新开 Xshell 就恢复原样」这个现象

子进程会从父 bash 进程继承内存中的环境变量,而 bash 自身加载的环境变量全部来自 Linux 本地的系统、用户配置文件。每次 bash 实例启动时,都会按固定顺序读取硬盘上的配置文件,将文件中定义的 PATH、自定义变量加载到自身运行上下文。这也能解释我们直接在终端临时修改 PATH 后,重新打开 Xshell 环境变量就恢复默认的现象:命令行执行 export 修改 PATH 只是临时存入当前 bash 进程内存,不会写入硬盘配置文件;关闭当前终端窗口后,该 bash 进程销毁,内存里临时新增的路径直接丢失;新打开的 Xshell 会创建全新 bash 进程,重新读取原始配置文件初始化环境,PATH 自然变回文件内预设的默认值。如果想要配置永久生效,需要将 PATH 追加语句写入~/.bashrc、/etc/profile 等持久化配置文件。

系统级配置(所有用户共用,开机 / 登录时加载)
  1. /etc/profile:登录 Shell 最先读取,定义全用户基础 PATH、系统全局变量;
  2. /etc/profile.d/*.sh/etc/profile会自动批量执行该目录下所有脚本,用于拆分系统环境配置;
  3. /etc/bashrc(CentOS)//etc/bash.bashrc(Ubuntu):全局交互式 shell 配置,所有新开终端都会加载,统一设置提示符、全局别名。

我们来看一下bashrc,bash_profile

这两个文件都是再用户家目录下的隐藏文件

bash_profile

他会读取bashrc的内容

bashrc

他会访问ect下面的bashrc


etc/bashrc

设置全系统所有用户共享的交互配置:

  1. 全局 shell 提示符 PS1、配色
  2. 全局别名 alias(所有用户都能用)
  3. 全局函数
  4. 自动补全、shell 安全设置

那么我们就可以设置一个自己的登录信息提示

了解变量

局部变量

我想要定义一个自己的环境变量

发现找不到我自己定义的环境变量,但是是存在这个变量的

因为这个环境变量还只是本地变量,也就是局部变量,他无法被子进程继承,没有全局性,只可以在bash内部访问

将局部变量转换为转为环境变量(环境变量是全局变量)

我们要用export将他导入环境变量,之后再搜索即可

export TEST=100

环境变量时全局的,子进程可以继承父进程的环境变量,

去除环境变量
unset 环境变量名

查看局部变量和全局变量
set

对比项局部变量环境变量 (export 导出)
定义语法var=xxxexport var=xxx/ 先赋值再 export
子进程继承❌ 不能继承✅ 子进程自动复制一份
C 语言 getenv 读取❌ 读不到✅ 可以读取
查看命令set(仅 shell 本地变量)env/printenv
删除命令unset varunset var(同时从环境表清除)
生命周期当前 shell 会话,关闭消失当前 shell 会话,关闭消失
持久化无法永久保存写入~/.bashrc等配置文件可永久生效
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/10 22:59:29

单 RGB 摄像头实现复杂环境导航!Robostral Navigate 成功率达 76.6%

导航模型 Robostral Navigate:单相机实现复杂环境自主导航产品与服务导航联系销售。菜单包括产品、解决方案、研究、开发者、博客、客户、公司。还可开始构建。产品介绍有 Studio 用于构建、测试和运行 AI 智能体和应用程序;Forge 用于训练、校准和评估自…

作者头像 李华
网站建设 2026/7/10 22:57:24

【LeetCode 手撕算法】(细节知识点总结)

一、Array类List类1、排序Arrays.sort(nums); Array要加s2、ArrayList<Integer> maxlist new ArrayList<>(); ArrayList里面两个大写3、数组固定不变用 .length&#xff0c;ArrayList可变用 .size()4、ArrayList 访问下标用 .get(i) ,数组才可以直接arr[…

作者头像 李华
网站建设 2026/7/10 22:56:05

如何构建自进化企业级 Agent 平台

从个人助手到多租户平台:为什么"再开几个进程"行不通 本系列教程以 AgentScope Java Harness 的 Builder 架构为蓝本,深度解析如何设计一个"一套自进化 Agent、一个组织共用"的多租户平台。适合正在构建企业级 Agent 平台的架构师和开发者。 前言:一套代…

作者头像 李华
网站建设 2026/7/10 22:54:11

浏览器自动化_agent-browser

以下为本文档的中文说明agent-browser 是一个浏览器自动化 CLI 工具技能&#xff0c;为 AI 代理提供完整的浏览器操控能力。它允许 AI 通过命令行接口执行各种浏览器操作&#xff0c;包括页面导航、表单填写、按钮点击、屏幕截图、页面数据提取、阅读浏览器标签页上下文等。该技…

作者头像 李华
网站建设 2026/7/10 22:53:08

OpenClaw基础学习

在OpenClaw从零开始&#xff08;篇一&#xff0c;初识OpenClaw&#xff09;_认识openclaw-CSDN博客 【OpenClaw到底是什么&#xff1f;一只龙虾如何搅动整个AI圈&#xff01;】 https://www.bilibili.com/video/BV1AcwczbEkN/?share_sourcecopy_web&vd_source7c2b5de7032b…

作者头像 李华
网站建设 2026/7/10 22:52:22

2026年房地产动画行业观察

房地产动画是通过三维建模、材质渲染与动态镜头语言&#xff0c;将建筑设计方案转化为可感知视觉内容的专业服务。在楼盘营销、案场展示、VR看房、工程投标等场景中&#xff0c;房地产动画正从“可选项”升级为“必选项”。2026年&#xff0c;行业呈现出技术路线加速分化、头部…

作者头像 李华