Linux——环境变量

ops/2024/11/29 4:44:23/

前言大佬写博客给别人看,菜鸟写博客给自己看,我是菜鸟。

感言:每天的认知都在被刷新。

1:基本概念

环境变量(environment variables):⼀般是指在操作系统中⽤来指定操作系统运⾏环境的⼀些参数

2:环境变量表

环境变量表

当用户登陆,系统会自动创建bash,而bash会生成环境变量表,它是一个字符指针数组,如下图

数组中每个指针指向了一个以"\0"结尾的环境字符串

👉:环境变量在系统中通常具有全局性

👉子进程会继承父进程的环境变量表

3:命令行参数表

在讲命令行参数表之前,我们先观察一下下面这段代码:

这里就需要刷新一下认知

①:我们平时所写的main函数其实是有参数的

②:main函数并不是程序的开始位置,有一个start函数,调用了main函数。

图中

argv[] → 指针数组,里面存放的是bash将用户指令解析过后的参数

argc   → 参数的个数

当我们输入 ./code -a 去执行这段代码时,如下图,bash将指令解析过后,会一一放入到命令行参数表当中。图中的 -a -b -c 是为了用户能够通过自定义设置,来实现自己想要完成的目标。

留一个疑问:为什么code -a 不能够直接执行?而 ls -l 能够直接执行?

带着上述疑问我们来思考一下:

当用户输入对应指令时,bash会将指令一一解析,放入到如下图的命令行参数表当中,但是别忘了先前我们提到的:用户登陆时,bash就会自动生成一个环境变量表!bash在将指令放入到命令行参数表时同时会在环境变量表中去查询ls指令,对应的查找方法是,将 PATH 环境变量中的路径参数,插入到 ls 前面,即在PATH路径下去寻找是否存在 ls 指令,事实是:PATH路径中当然存在ls,于是乎bash找到了ls指令,然后成功实现指令,而其中 -l 又是老祖宗想要实现的自定义目标,就正如我们上面代码中的 -a -b -c。

注1:我们来看看环境变量 PATH是怎样的?

注2:现在来回答上述疑问,因为环境变量 PATH 中没有找到 code 这条指令,因此无法执行。 (其实可以将 code 加入到 PATH 搜索路径中的任意一个路径处,但是不推荐,会污染指令池。还有一种方法是在 PATH 的搜索路径中额外添加code所在的路径。)

注3:环境变量最开始是从系统的相关配置文件中来的

当我们登陆时,系统创建bash时,会自动调用bashrc 和 bash_profile 中的内容,构建相应的环境内容。

注4:环境变量远不止PATH一个,通过env指令能够查看当前所有环境变量。

4:与环境变量有关的指令

env:查看所有环境变量

echo $name:查看指定环境变量内容

export name=xxxxxx:导入一个环境变量,不能有空格

unset name:释放指定环境变量

char * s= getenv("name") : 通过函数获取指定环境变量的方式

注1:其中export是内建指令,在执行时不需要创建子进程,而是由bash亲自执行,其他内建指令还有pwd、cd等。

注2:bash内部除了环境变量,还存在本地变量,本地变量只在bash内部使用,通过set指令可以查看当前所有的环境变量以及本地变量


http://www.ppmy.cn/ops/137564.html

相关文章

如何通过ChatGPT提高自己的编程水平

在编程学习的过程中,开发者往往会遇到各种各样的技术难题和学习瓶颈。传统的学习方法依赖书籍、教程、视频等,但随着技术的不断发展,AI助手的崛起为编程学习带来了全新的机遇。ChatGPT,作为一种强大的自然语言处理工具&#xff0c…

Spring Boot整合Redis Stack构建本地向量数据库相似性查询

Spring Boot整合Redis Stack构建本地向量数据库相似性查询 在微服务架构中,数据的高效存储与快速查询是至关重要的。Redis作为一个高性能的内存数据结构存储系统,不仅可以用作缓存、消息代理,还可以扩展为向量数据库,实现高效的相…

Qt桌面应用开发 第九天(综合项目一 飞翔的鸟)

目录 1.鸟类创建 2.鸟动画实现 3.鼠标拖拽 4.自动移动 5.右键菜单 6.窗口透明化 项目需求: 实现思路: 创建项目导入资源鸟类创建鸟动画实现鼠标拖拽实现自动移动右键菜单窗口透明化 1.鸟类创建 ①鸟类中包含鸟图片、鸟图片的最小值下标和最大值…

【04】Selenium+Python 手动添加Cookie免登录(实例)

一、什么是Cookie? Cookie 是一种由服务器创建并保存在用户浏览器中的小型数据文件。它用于存储用户的相关信息,以便在后续访问同一网站时可以快速检索这些信息。Cookie 主要用于以下几个方面: 1.状态管理: Cookie 可以保存用户…

【简单好抄保姆级教学】javascript调用本地exe程序(谷歌,edge,百度,主流浏览器都可以使用....)

javascript调用本地exe程序 详细操作步骤结果 详细操作步骤 在本地创建一个txt文件依次输入 1.指明所使用注册表编程器版本 Windows Registry Editor Version 5.00这是脚本的第一行,指明了所使用的注册表编辑器版本。这是必需的,以确保脚本能够被正确解…

数据库和缓存的数据一致性 -20241124

问题描述 一致性 缓存中有数据,缓存的数据值数据库中的值缓存中本没有数据,数据库中的值最新值(有请求查询数据库时,会将数据写入缓存,则变为上面的“一致”状态) “数据不一致”: 缓存的数据值…

探索 Vue的nextTick :原理剖析、使用场景及代码实践详解

在 Vue 中,$nextTick 是一个非常有用的 API,主要用于在 DOM 更新完成后执行一些操作。它可以确保某些代码在 Vue 完成数据更新和 DOM 渲染后再执行,从而避免因更新延迟导致的问题。 1. $nextTick 的作用 $nextTick 的作用是延迟执行一个回调函数,直到 DOM 更新完成。这通…

Linux系统性能优化技巧

系统性能优化 在当今的信息技术领域,Linux系统的性能优化变得越来越重要。随着Linux操作系统的广泛应用,从桌面环境到大型服务器集群,性能优化不仅可以提升系统的响应速度和吞吐量,还能降低资源消耗,从而延长硬件使用…