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

Linux下的环境变量

目录

1.引言

1.1bash的部分工作

1.2main函数也有参数 

1.3我们可以通过给main函数传入不同的参数,让同一份代码实现不同的功能

1.4先认识一个环境变量PATH,帮助Linux找到指令程序的地址 

2.环境变量

2.1环境变量的概念

2.2见见其他的环境变量

2.3自己设置环境变量

2.4程序自己获取环境变量

2.4.1通过参数env获取环境变量

2.4.2环境变量的特性 

2.4.2通过getenv()(系统调用接口)获取环境变量 

2.4.3环境变量的一个小应用

2.4.4第三方调用接口获取环境变量

2.5环境变量的配置文件

2.5环境变量与本地变量


1.引言

1.1bash的部分工作

这一个就是我们命令行的开始,这个是谁输入的呢?这个其实是bash输出的。

bash不仅输出开头,还帮我们接受输入值。 

1.2main函数也有参数 

 

我们在命令行中输入字符串,都被bash传递给了main函数,

argc存储输入字符串的个数,argv存储输入的所有字符串。

1.3我们可以通过给main函数传入不同的参数,让同一份代码实现不同的功能

 ./mybin -add 1 2 ,这个就是我们在运行自己的程序,这个是不是和Linux下的指令特别相似。之前提到,Linux下的指令其实上本质就是程序,这点在这里也得到了验证,

但是,这里还有一点区别的是我们自己的程序./ mybin 声明了自己的路径(执行一个程序必须先找到一个程序),而Linux下的指令却不需要声明路径,这是为什么呢?

我们联想到应该是有一个未知的东西帮助指令完成了这个工作。

1.4先认识一个环境变量PATH,帮助Linux找到指令程序的地址 

 其实上这个PATH路径就是一个默认的搜索路径,当你输入一个命令没有输入路径时,Linux就会默认到这个路径下搜索。

PATH不是一个单一路径,这是一个以冒号( :)作为分隔符的很多路径的集合。

我们如果将自己的程序添加到,PATH内的某一路径下时,也可以在执行时不需要添加路径。 (这里不建议这么干,因为你写的软件毕竟只是一个半成品,贸然加进去可能会污染命令池)。

 我们同样也可以把我们的可执行程序所处的路径加入到PATH变量当中去。

PATH = 路径:$PATH(这里对PATH是覆盖式写入的,需要加上:PATH来保留之前的值) 

2.环境变量

2.1环境变量的概念

环境变量,一般是系统内置的的具有特殊作用的变量(本质就是系统开辟空间,给他名字和内容)。

环境变量不是一个,而是一堆,彼此之间没有特殊联系。 

2.2见见其他的环境变量

如PWD就是记录着你的当前路径,当你使用pwd命令时,OS才能给你返回值。

。。。 

env 查看所以的环境变量 

就是当你访问操作系统的时候,操作系统根本不知道你是谁。

是操作系统,在当你登录的时候,把你需要的周边信息都暂时维护起来了。当操作系统需要识别你是谁时,或者你的主机号等等你的信息时,就能够直接通过环境变量去找。

就是每次当你登录的时候,操作系统都会开辟一段空间,把你用户的信息维护起来。 

2.3自己设置环境变量

export name=val


2.4程序自己获取环境变量

2.4.1通过参数env获取环境变量

其实上,main函数还有一个参数,char * env[],这个数组里就存储着环境变量字符串的第一个字符的的地址。 

 

2.4.2环境变量的特性 

我们发现,bash进程真的把环境变量以参数的形式传递给了main函数。 

我们的程序运行的时候,也会变成一个进程,那么他的环境变量就应该是来着bash,也就是他的父进程。 

环境变量的特性:具有全局属性 ,会被所有的子进程和孙子进程给继承。

如果某一进程需要修改,即发生写时拷贝

2.4.2通过getenv()(系统调用接口)获取环境变量 

const char *username=getenv("USER");

2.4.3环境变量的一个小应用

利用环境变量设置一个小权限,让代码只有自己能够运行。 

2.4.4第三方调用接口获取环境变量

#include <stdio.h>
int main(int argc, char *argv[])
{extern char **environ;int i = 0;for(; environ[i]; i++)
{printf("%s\n", environ[i]);}return 0;
}

2.5环境变量的配置文件

我们发现,当我们在把环境变量在命令行上直接给修改了,我们重启Linux的时候,再次查看环境变量,他就恢复成了原样。

这就说明了,我们的修改数据仅仅停留在了内存上,当虚拟机重启的时候,文件重新加载进入内存的时候一切都恢复了。 


2.5环境变量与本地变量

 环境变量具有全局属性,会被子进程继承。

本地变量,只会留在本进程

相关文章:

Linux下的环境变量

目录 1.引言 1.1bash的部分工作 1.2main函数也有参数 1.3我们可以通过给main函数传入不同的参数&#xff0c;让同一份代码实现不同的功能 1.4先认识一个环境变量PATH&#xff0c;帮助Linux找到指令程序的地址 2.环境变量 2.1环境变量的概念 2.2见见其他的环境变量 2…...

Edge论文的创新点

创新点及其来源 1. 从灰度边缘重建RGB图像的方法&#xff08;EdgRec&#xff09; 基于的方法&#xff1a;传统的重建方法&#xff0c;如使用自动编码器或生成模型来重建正常样本的图像&#xff0c;并通过对原始图像和重建图像的比较来检测异常。 重建过程&#xff1a; 训练阶…...

‌ComfyUI 高级实战:实现华为手机的AI消除功能

大家好&#xff0c;我是每天分享AI应用的萤火君&#xff01; 不知道大家是否还记得华为 Pura 70的「AI消除」事件&#xff0c;当时使用 华为Pura 70 系列手机的智能消除功能时&#xff0c;该功能可以被用来消除照片中女性胸口处的衣物&#xff0c;这一功能曾引发广泛的关注和伦…...

我记得我曾喜欢过冬天

写在前面 1316 字 | 感触 | 世界 | 情感 | 体验 | 经历 | 想法 | 认知 正文 晚上出门&#xff0c;起电单车&#xff0c;很冷。冻得有些发抖。下车&#xff0c;我第一时间和珍发了消息。 我说&#xff0c;居然在四川感受到了哈尔滨的温度。 哈尔滨的夏天很热&#xff0c;但哈尔…...

最新夜间数据集发布LoLI-Street: 33000帧数据,涵盖19000个目标

最新夜间数据集发布LoLI-Street: 33000帧数据&#xff0c;涵盖19000个目标 Abstract 低光照图像增强&#xff08;LLIE&#xff09;对于许多计算机视觉任务至关重要&#xff0c;包括目标检测、跟踪、分割和场景理解。尽管已有大量研究致力于提高在低光照条件下捕捉的低质量图像…...

反向传播算法与随机搜索算法的比较

反向传播算法与随机搜索算法的比较 在这篇文章中&#xff0c;我们将通过一个简单的线性回归问题来比较反向传播算法和随机搜索算法的性能。我们将使用Python代码来实现这两种算法&#xff0c;并可视化它们的梯度下降过程。 反向传播算法 反向传播算法是深度学习和神经网络训…...

【PDF文件】默认被某种软件打开,如何进行修改?

当有时下载某种软件后&#xff0c;电脑中的PDF文件就默认由该种软件打开&#xff0c;每次需要右键选择打开方式才能选择需要的其他软件打开。如下图所示。 修改方法&#xff1a; &#xff08;1&#xff09;点击电脑的“设置”&#xff0c;选择应用 &#xff08;2&#xff09;…...

Kaggle Python练习:字符串和字典(Exercise: Strings and Dictionaries)

文章目录 问题&#xff1a;搜索特定单词并定位思路代码实现官方代码代码解析 更进一步 问题&#xff1a;搜索特定单词并定位 一位研究人员收集了数千篇新闻文章。但她想将注意力集中在包含特定单词的文章上。完成以下功能以帮助她过滤文章列表。 您的函数应满足以下条件&…...

React(四) 事件总线,setState的原理,PureComponent优化React性能,ref获取类组件与函数组件

文章目录 一、全局事件总线二、setState的原理1. 为什么要使用setState修改数据2. setState的三种用法(1) 基本使用(2) 传入回调函数(3) setState是一个异步调用 3. setState为什么要设置成异步 二、PureComponent优化性能1. React的diff算法以及Key的优化(扩展)(1) diff算法(2…...

Java学习-JVM

目录 1. 基本常识 1.1 JVM是什么 1.2 JVM架构图 1.3 Java技术体系 1.4 Java与JVM的关系 2. 类加载系统 2.1 类加载器种类 2.2 执行顺序 2.3 类加载四个时机 2.4 生命周期 2.5 类加载途径 2.6 双亲委派模型 3. 运行时数据区 3.1 运行时数据区构成 3.2 堆 3.3 栈…...

leed认证分几个级别

LEED&#xff08;Leadership in Energy and Environmental Design&#xff09;认证是一个评估建筑项目可持续性的严格框架&#xff0c;其级别主要分为以下四个&#xff1a; LEED认证&#xff08;Certified&#xff09;&#xff1a;这是最低级别的认证&#xff0c;要求建筑项目…...

3.C++经典实例-计算一个数的阶乘

阶乘&#xff08;factorial&#xff09;是‌基斯顿卡曼于1808年发明的运算符号&#xff0c;用于表示一个正整数n的所有小于及等于该数的正整数的积。自然数n的阶乘写作n!。例如&#xff0c;5的阶乘表示为5! 1 2 3 4 5 120。 阶乘在数学和计算机科学中有广泛的应用。例如…...

深入理解Qt中的QTableView、Model与Delegate机制

文章目录 显示效果QTableViewModel(模型)Delegate(委托)ITEM控件主函数调用项目下载在Qt中,视图(View)、模型(Model)和委托(Delegate)机制是一种非常强大的架构,它们实现了MVC(模型-视图-控制器)设计模式。这种架构分离了数据存储(模型)、数据展示(视图)和数据操作(委托),使…...

解读《ARM Cortex-M3 与Cortex-M4 权威指南》——第1章 ARM Cortex-M处理器简介

1. 三级流水线设计 解释:三级流水线设计意味着处理器在执行指令时可以同时处理多个步骤。这些步骤通常包括取指(Fetch)、译码(Decode)和执行(Execute)。好处:这种设计提高了指令的执行效率,使得处理器能够在每个时钟周期内完成更多的工作,从而提升整体性能。2. 哈佛总…...

java集合类的框架体系

1.集合的好处 相比数组&#xff0c;他可以存储多种类型的元素&#xff0c;并且可以动态新增&#xff1b; 2. 集合分类 3.Collection接口 3.1常用方法 3.2迭代器-遍历 collection接口继承了Interable接口&#xff0c;collection的子类可以使用迭代器&#xff1b; 注意事项…...

基于SpringBoot+Vue+Uniapp家具购物小程序的设计与实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而…...

什么是模糊测试?

近年来&#xff0c;随着信息技术的发展&#xff0c;各种新型自动化测试技术如雨后春笋般出现。其中&#xff0c;模糊测试&#xff08;fuzz testing&#xff09;技术开始受到行业关注&#xff0c;它尤其适用于发现未知的、隐蔽性较强的底层缺陷。这里&#xff0c;我们将结合AFL开…...

3.C++经典实例-奇数还是偶数

要判断一个数是奇数还是偶数&#xff0c;只需要判断这个数是否能被2整除即可&#xff0c;如果要判断是否能整除&#xff0c;则要判断当前数除以2的余数是否为0&#xff0c;在C中&#xff0c;余数&#xff0c;使用%号&#xff0c;因此&#xff0c;程序为&#xff1a; #include …...

真牛啊!全球人工智能标准教科书,斯坦福、麻省理工、加州大学等十多所顶尖机构为它点赞!!

这本《人工智能&#xff1a;计算代理基础》堪称全球人工智能标准教科书&#xff01;它因其前沿的技术融合、丰富的实践案例以及理论深度与实践并重的特点而成为人工智能领域的热门书籍。 该书已经赢得了斯坦福大学、佐治亚理工学院、谷歌大脑、麻省理工学院、加州大学、微软研究…...

Android——通过MediaStore查询图片

查询图片&#xff1a; private void loadImageList() {String[] columns new String[]{MediaStore.Images.Media._ID, // 编号MediaStore.Images.Media.TITLE, // 标题MediaStore.Images.Media.SIZE, // 文件大小MediaStore.Images.Media.DATA, // 文件路径};Cursor cursor g…...

告别论文 “红标警告”!Paperxie 四大降重降 AIGC 功能:让本科生毕业通关率飙升

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AIPPThttps://www.paperxie.cn/weight?type1https://www.paperxie.cn/weight?type1 一、 论文人的崩溃瞬间&#xff1a;查重红了&#xff0c;AIGC 标了&#xff0c;答辩悬了 你有没有过这样的经历&#…...

七自由度机械臂嵌入式实时运动控制固件框架

1. 项目概述RobotControl_7Axis是一个面向七自由度&#xff08;7-DOF&#xff09;串联式机械臂的嵌入式运动控制固件框架&#xff0c;专为基于ARM Cortex-M系列微控制器&#xff08;如STM32H743、STM32F429&#xff09;的实时伺服驱动器节点设计。该项目并非通用机器人操作系统…...

分层dfs,一种介于dfs与bfs之间的算法

在算法设计的深邃丛林中&#xff0c;深度优先搜索与广度优先搜索如同两条风格迥异的小径。前者沿着一条道路走到黑&#xff0c;不撞南墙不回头&#xff0c;却往往在最优解的门口徘徊——它难以回答"最少需要几步"这样的问题&#xff0c;因为一旦深入某个分支&#xf…...

告别“黑盒”:用Grad-CAM可视化Attention机制,看HSI分类模型到底关注了啥

深度解析高光谱分类中的注意力机制&#xff1a;从理论到可视化实践 当我们面对一张高光谱图像时&#xff0c;人类视觉系统会本能地聚焦于最显著的特征——可能是植被的健康状况、水体的污染程度&#xff0c;或是建筑物的材质差异。但当我们训练一个深度学习模型来完成同样的分类…...

Eclipse 添加书签的详细指南

Eclipse 添加书签的详细指南 引言 Eclipse 作为一款功能强大的集成开发环境(IDE),被广泛应用于Java编程和软件开发领域。书签功能是Eclipse提供的一个便捷的工具,可以帮助开发者快速定位到代码中的特定位置。本文将详细介绍如何在Eclipse中添加书签,以及如何管理和使用这…...

网络SEO优化与移动端优化的关系是什么

网络SEO优化与移动端优化的关系&#xff1a;为什么两者不可分割 在当前互联网时代&#xff0c;网络SEO优化与移动端优化的关系越来越受到企业和营销人员的关注。随着移动互联网的普及&#xff0c;越来越多的用户通过手机浏览器进行网络搜索和浏览。因此&#xff0c;如何在网络…...

STM32外设驱动:内存映射与寄存器操作详解

1. STM32外设驱动基础&#xff1a;内存映射与寄存器操作在嵌入式开发领域&#xff0c;STM32系列单片机因其出色的性能和丰富的外设资源而广受欢迎。要真正掌握STM32的开发&#xff0c;理解其底层外设驱动机制至关重要。让我们从一个工程师的视角&#xff0c;深入剖析STM32外设驱…...

TVA系统从安装到调优的关键节点把控

当AI智能体视觉检测系统&#xff08;TVA&#xff09;的硬件设备抵达现场&#xff0c;真正的挑战才刚刚开始。部署调试阶段是将蓝图变为现实的关键环节&#xff0c;其间遍布技术“暗礁”。作为一名现场工程师&#xff0c;您的严谨操作和问题预判能力&#xff0c;将直接决定系统上…...

ROS Noetic下,用DWA和TEB调教你的机器人:move_base局部规划器参数实战避坑指南

ROS Noetic下DWA与TEB局部规划器参数调优实战指南 1. 理解局部规划器的核心作用 在ROS导航堆栈中&#xff0c;局部规划器扮演着机器人运动控制的"末梢神经"角色。当全局规划器生成了一条从起点到终点的理想路径后&#xff0c;局部规划器负责根据实时环境信息&#xf…...

可变形卷积(Deformable Convolution)原理与在YOLOv11中的集成

上周在产线测试YOLOv11的缺陷检测模型&#xff0c;遇到个头疼的问题&#xff1a;同一类金属件&#xff0c;因为冲压模具磨损导致边缘出现轻微形变&#xff0c;模型漏检率突然飙升。常规的卷积核是固定网格采样&#xff0c;对这类几何形变缺乏适应性。调了一整天数据增强&#x…...