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

环境变量相关知识

目录

目录

谢谢你的阅读,这是对我最大的鼓舞

先说结论:

开始论述:

让我们举个例子

相关指令

 创建本地变量

创建环境变量

方法一:

方法二:

删除环境变量

子进程中也有环境变量

第一种:

第二种

第三种

环境变量通常具有全局属性

归纳论述



谢谢你的阅读,这是对我最大的鼓舞

先说结论:

  • 环境变量一般指在操作系统中用来指定操作系统运行环境的一些参数。
  • 环境变量通常具有某些特殊的用途,在系统中通常具有全局特性。

        环境变量是在系统中具有一定全局性质的变量,通常是为了满足某些系统的需求。指明操作系统的某些重要目录在哪。

开始论述:

        在linux系统中,命令还是工具又或是可执行程序,我们都同称为文件,但是为什么使用系统命令可以直接运行使用,而可执行程序却需要加上  . /  呢?为什么不可以和系统命令一样直接运行呢? 

这就要引出我们这篇文章的核心:环境变量

什么是环境变量,先理解变量,在语言层面,变量其实只不过是程序可操作的存储区的名称。每个变量都有特定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中。

那么环境变量其实也是变量,让我们看看有哪些环境变量

在命令行输入env

(= )等号前是环境变量的变量名字,后面是该环境变量的路径名称。

        当然了一个环境变量可以不止有一个路径信息。首先让我们学习查看某个环境变量的指令

命令"echo $THAT" THAT 环境变量名。$类似于指针解引用

这里的每一个变量都有一个或多个路径,他们以  :  划分。

让我们举个例子

先让我们看看ls的指令的路径
     

发现改路径usr/bin/位于PATH环境变量值中,这有什么联系吗?

这引出了我们的一个新的知识点,当我们在命令行打入ls指令

 在寻找时,一旦在某变量的某路径下寻找到了。

例子结论:操作系统会在环境变量中查看是否有某路径下有ls指令。

那么我们可以让我们的可执行程序如指令一样的不自己加寻址就可以运行吗?当然可以使用export命令

        这里有个注意点,export 后必须PATH=$PATH  :添加指令路径,这样就是让添加路径追加到PATH环境变量路径中,如果不这样写的话,直接PATH=添加指令路径,会将之前的路径覆盖。这样其他的路径下的指令将无法快捷使用了。

        但是这样的添加指令是不推荐的:首先这样的添加环境变量只是追加临时的路径,在下次重新登陆后环境变量还是会根据文件信息重置环境变量,如果想永久生效需要更改配置文件。

不要再系统的环境变量添加路径污染系统指令池。

        所以我们尽量自己写指令池,而且都要写入在文件中。

        这些系统命令怎么添加到环境变量文件呢?安装软件时,会把对应软件的可执行程序拷贝到环境变量的某个路径下,PATH只是环境变量之一,系统还有很多环境变量又来解决不同场景。

相关指令

这里还有于环境变量相关的指令。

1:echo:显示某个环境变量

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

3:env:显示所有环境变量

4:unset:清除环境变量

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


 创建本地变量

类似于语言层面的,直接在命令行输入myset=100,回车,

这样myset就是在本地生成变量,可以使用set | grep查看是否在本地定义shell中。

创建环境变量

方法一:

在命令行添加export  xxxx=100(xxxx为变量名)

 如果为给A_NUMBER初始化,A_NUMBER就不会成为环境变量

方法二:

先创建shell本地变量A_NUMBER

再将本地变量加入环境变量

这里可以这样写A_NUMBER=A_NUMBER=100

这样就可以查询什么变量有什么值了

删除环境变量

使用unset删除刚刚创建的A_NUMBER环境变量

子进程中也有环境变量

第一种:

然我们先了解main函数其实又有参数的,类似于printf,scanf,拥有可变参数。

 编译后生成可执行文件,我们执行后

 每一个元素都是命令行上以空格分割的字符串。

那么显示代码中的子进程,这里我们要用二级指针的概念为大家讲解

如何在代码中显示环境变量内容呢?其实env是一个指针数组,每个元素都是char*类型的指针,每个都指向一个环境变量字符串。

数组中最后一个指针指向的是NULL空指针,作为数组的最后一个元素,以作为结尾。所以就算我们不知道该数组我们有几个元素,我们也可以遍历数组。

第二种

利用environ外联变量

 连接时是有个外界指针environ,指向着env数组,我们需要再我们自己的文件中声明外界变量即可。

关系就是这样的。所以我们可以通过environ访问环境变量。

第一种和第二种的遍历环境变量都是依靠环境变量数组的最后一个元素指向NULL做结尾,类似于字符串结尾'\0'

第三种

使用系统函数getnev()查看某个函数变量

首先包含getnev函数的头文件为stdlib.h 

发现再子进程中可以通过getnev查看到想要查看的环境变量。

环境变量通常具有全局属性

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

为什么会继承呢?子进程不能是自己单独的环境变量吗?为什么要继承父进程的环境变量?

为了再进程运行时,需要使用环境变量路径下的各个工具,各个关联程序以及其他资源

现在我们验证子进程继承父进程的环境变量

第一步使用getenv查看是否有MY_ENV自定义环境变量

 

 编译后发现根本不存在该环境变量。

然后在命令行(test进程的父进程)创建一个自定义的环境变量

env查看,这时命令行的环境变量中就有了MY_ENV环境变量

让我们再一次运行test可执行程序

结果是,在父进程命令行的环境变量MY_ENV,会被子进程继承。

得出结论,子进程的环境变量是在运行时,从父进程中继承的 

归纳论述

1:环境变量其实就是可执行的文件(指令,工具也属于文件)在执行时的该文件的寻找路径。

2:在一些进程运行时,依赖的一些工具,这就要依靠环境变量提供的路径寻找工具的路径。

3:在子进程中也有属于自己的环境变量。

4:程序加载到内存中成为进程,该进程所使用的环境变量其实就是其父进程的环境变量继承的。


 谢谢能看到这里的靓仔!!!!!!!!!!!!!!

相关文章:

环境变量相关知识

目录 目录 谢谢你的阅读,这是对我最大的鼓舞 先说结论: 开始论述: 让我们举个例子 相关指令 创建本地变量 创建环境变量 方法一: 方法二: 删除环境变量 子进程中也有环境变量 第一种: 第二种 …...

如何快速入门ChatGPT

作为一个AI模型,ChatGPT并不需要像人一样“学习”,它已经通过大量的训练数据和算法进行了预训练,可以回答广泛的问题。 然而,如果你想学习如何使用ChatGPT来进行对话或者问答,以下是一些建议: 一、了解Ch…...

Akka定时任务schedule()方法

Akka定时任务schedule()方法 文章目录Akka定时任务schedule()方法什么是Akka定时任务schedule()方法?如何使用Akka定时任务schedule()方法?如何在actor外部获取Scheduler对象为什么需要提供一个隐式的ExecutionContext对象,用于执行定时任务&…...

Python实现处理和分析大规模文本数据集,包括数据清洗、标注和预处理

处理和分析大规模文本数据集,包括数据清洗、标注和预处理,是自然语言处理(NLP)中非常重要的一步。Python 是一种非常流行的编程语言,拥有丰富的 NLP 库和工具,可以帮助我们完成这些任务。以下是一个简单的实现示例,包括数据清洗、标注和预处理: import re import nltk…...

灌区量测水系统

1)灌区量测水 灌区量测水是水资源管理的基础,是推进节水农业和水价改革的重要手段。常规在主要水闸处,监测闸前和闸后水位及闸门开启状态(闸位),通过实时监测数据,计算过闸流量。要实现全灌区水资源动态配置、精准灌溉&#xff0…...

3.3 泰勒公式

学习目标: 复习微积分基础知识。泰勒公式是微积分的一个重要应用,因此在学习泰勒公式之前,需要复习微积分的基本概念和技能,包括函数的导数和微分、极限、定积分等。可以参考MIT的微积分课程进行复习和加强。 学习泰勒级数和泰勒…...

ubuntu中通过vscode编译调试ORB-SLAM3

为了在orb-slam3的基础上进行二次开发,这几天花了不少精力,终于搞懂怎么在ubuntu系统中像windows里visual studio中一样方便的打断点调试了,在这里把整个过程再重新梳理一下。 1 首先从安装ubuntu 22.04开始 因为是从实验室毕业先辈那里继承…...

阿里版 ChatGPT 突然上线!

转自:纯洁的微笑 其实早本月初,就传出过不少阿里要推出类ChatGPT的消息。 前几天率先流出的天猫精灵“鸟鸟分鸟”脱口秀版GPT,就是基于大模型的“压缩版”,已经以其惊艳表现吸引了众目光。 如今“原版大菜”上桌,自然一点即着&a…...

《Kubernetes部署篇:Ubuntu20.04基于containerd部署kubernetes1.24.12单master集群》

一、架构图 如下图所示: 二、环境信息 主机名K8S版本系统版本内核版本IP地址备注k8s-master-621.24.12Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.62master节点k8s-worker-631.24.12Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.63worker节点k8s-worker-641…...

MAZDA CX-50没现车怎么办?赶紧去VR看车啊!

爱车一族往往都有过这样的经历:听说某家品牌出了一款心仪的新车,于是一直心心念念想要先睹为快。然而这时候问题就来了:新车从发布到量产上市往往要经历一段过程。没有现车的日子里,就算每天去4S店蹲守也看不到新车。那种心里痒痒…...

结构体全解,适合初学者的一条龙深度讲解(附手绘图详解)

我们知道,C语言是允许我们自己来创造类型的,这些类型就叫做——自定义类型。 自定义类型又包括结构体类型,联合体类型还有枚举类型。 今天的文章,我们就着重讲解这其中的结构体类型。 目录 结构体的声明 1.1结构的基础知识 …...

什么是SD-WAN技术?企业网络优化的利器!

现今,企业网络架构已成为其发展不可或缺的组成部分。针对网络性能优化方面,SD-WAN是一种值得深思熟虑的选择,在企业网络中应用SD-WAN技术能够带来多重好处。 什么是SD-WAN技术以及它是如何工作的? SD-WAN是软件定义的广域网&…...

JAVA练习106- 生命游戏

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、题目-生命游戏 1.题目描述 2.思路与代码 2.1 思路 2.2 代码 总结 前言 提示:这里可以添加本文要记录的大概内容: 4 月12日练习…...

【案例教程】基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作实践技术

【原文链接】: 基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作实践技术https://mp.weixin.qq.com/s?__bizMzU5NTkyMzcxNw&mid2247537049&idx3&sn31ef342c4808aed6fee6ac108b899a33&chksmfe6897f3c91f1ee5c4fa8e4eeea34…...

php7类型约束,严格模式

在PHP7之前,函数和类方法不需要声明变量类型 ,任何数据都可以被传递和返回,导致几乎大部分的调用操作都要判断返回的数据类型是否合格。 为了解决这个问题,PHP7引入了类型声明。 目前有两类变量可以声明类型: 形参&a…...

2023-04-11 无向图的匹配问题

无向图的匹配问题 之所以把无向图的这个匹配问题放到最后讲是因为匹配问题借鉴了有向图中一些算法的思想 1 最大匹配和完美匹配 二分图回顾 二分图:把一个图中的所有顶点分成两部分,如果每条边的两端分别属于不同部分,则这个图是二分图。更多…...

国家出手管人工智能AI了

我是卢松松,点点上面的头像,欢迎关注我哦! 全球都在封杀AI,国家也出手了,人工智能AI的强监管来了!这次反应速度算是很快了。国家出手,AI必须管。 国家网信办拟针对生成式人工智能服务出台管理办法&#…...

day24—选择题

文章目录1.将N条长度均为M的有序链表进行合并,合并以后的链表也保持有序,时间复杂度为(A)2.已知某个哈希表的n个关键字具有相同的哈希值,如果使用二次探测再散列法将这n个关键字存入哈希表,至少要进行&…...

自投递简历以来的第一次面试

投完简历之后HR小姐姐接着就安排了面试,原定时间是今天下午六点,我五点五十进的会议,结果等到六点二十(真的有点不耐烦了说实话)面试官打电话过来了说网络不是很好,所以改成电话面试了。 1、session信息保…...

【C++11】新特性 - 右值引用详解

文章目录STD容器使用右值引用场景移动语义在容器中的使用主要体现在两个方面:移动构造函数和移动赋值运算符。移动语义只对右值有效,对左值无效原因STD容器使用右值引用场景 移动语义在容器中的使用主要体现在两个方面:移动构造函数和移动赋…...

C++学习笔记

C学习笔记函数一般有返回值,构造函数有没有返回值?有返回值,返回一个对象,确定所以没写;在头文件中,防卫式声明,#ifndef…#define … #endif;pass by value或者 reference,传值是整包…...

项目1实现login登录功能方案设计第三版

需求优化点:MySQL表常用功能模块实现方案index页面home页面需求 实现一个登录功能 实现的功能 注册(邮箱注册)登录(邮箱密码)重置密码查看操作记录(登录, 注册, 重置密码, 登出. 都算操作)登出在第2版的基础上进行优化:\ 优化点: VerificationCode(验证码储存库): 增加时间字段…...

Node【七】初识Express框架

文章目录🌟前言🌟Express框架🌟1.什么是框架🌟2.express安装🌟3.创建web服务基本遵循之前的四个步骤:🌟4.路由🌟 由 :请求方式请求路径(1)get发送…...

Android 高通Camera2 Camera Device Close

1、很多人看到这个日志第一感觉可能觉得哪里没有合理释放,于是带着这个思路去进行百度探索 2、一开始我去寻找 ImageReader.OnImageAvailableListener 这个问题 var afterBitmap: Bitmap? null/**监听拍照的图片 */private val imageAvailableListener ImageRead…...

TensorFlow Lite,ML Kit 和 Flutter 移动深度学习:1~5

原文:Mobile Deep Learning with TensorFlow Lite, ML Kit and Flutter 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的…...

4、浅谈Makefile文件及其简单的使用知识

文章目录1、什么是Makefile?(1)makefile关系到了整个工程的编译规则。(2)makefile带来的好处就是——“自动化编译”(3)make是一个命令工具,是一个解释makefile中指令的命令工具2、为…...

5G/V2X赛道「重启」

在提升高阶智能驾驶安全性和感知冗余能力的道路上,除了激光雷达、高精度地图及定位,还有一项技术可能即将掀起一场新的风暴。 就在今年3月,作为全球通信领域的年度风向标 — 2023世界移动通信大会(MWC)上,…...

pytorch进阶学习(四):使用不同分类模型进行数据训练(alexnet、resnet、vgg等)

课程资源:5、帮各位写好了十多个分类模型,直接运行即可【小学生都会的Pytorch】_哔哩哔哩_bilibili 目录 一、项目介绍 1. 数据集准备 2. 运行CreateDataset.py 3. 运行TrainModal.py 4. 如何切换显卡型号 二、代码 1. CreateDataset.py 2.Train…...

Java面向对象高级【注解和反射】

目录 注解 什么是注解? 自定义注解 元注解 反射 什么是反射 静态语言和动态语言 动态语言 静态语言 对比 Class类 Java内存分析 类加载过程 类加载器 获取运行时类的完整结构 通过Class对象实例化对象 1.调用Class对象的newInstance 2.Constructor…...

Pytorch基础 - 4. torch.expand() 和 torch.repeat()

目录 1. torch.expand(*sizes) 2. torch.repeat(*sizes) 3. 两者内存占用的区别 在PyTorch中有两个函数可以用来扩展某一维度的张量,即 torch.expand() 和 torch.repeat() 1. torch.expand(*sizes) 【含义】将输入张量在大小为1的维度上进行拓展,…...