Linux之进程(三)(环境变量)

news2024/12/23 9:49:15

目录

一、基本概念

二、环境变量

1、PATH

2、HOME

3、SHELL 

三、环境变量参数

四、argc和argv


一、基本概念

环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数。如:临时文件夹位置和系统文件夹位置等。环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性。

二、环境变量

使用env命令可以查看当前系统中的所有环境变量。

1、PATH

要执行一个程序,那就需要先找到这个程序,怎么去找,这时候就需要带上路径,如我们经常使用的  ./  的方式。

再比如,我们使用的各种系统命令(ls, grep等),我们都知道其实它们是存在一些文件中的,我们在使用时也可以通过完整的路径去使用它们。但是运行一个程序能不能像使用命令那样只需要输入它的名字,就可以使它运行呢?

如下图:我们可以通过使用pwd的完整路径来使用pwd。

这时,我们就可以使用PATH来帮助我们。当要求操作系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到PATH中指定的路径去找。

所以,我们写的可执行程序无法像系统命令那样使用的根本原因就是其路径不在PATH环境变量所维护的搜索路径中。

如下图:我们常使用的各种系统命令就在PATH里的各种路径中。如:/usr/bin/pwd。

我们可以把可执行程序的路径添加到PATH中,就可以像系统命令一样使用了。如下:使用下面的命令添加。

export PATH=$PATH:路径

2、HOME

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

3、SHELL 

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

和环境变量相关的命令
1、echo: 显示某个环境变量值
2、export: 设置一个新的环境变量
3、env: 显示所有环境变量
4、unset: 清除环境变量
5、set: 显示本地定义的shell变量和环境变量

三、环境变量参数

在前面的语法学习中,我们知道main函数也是存在命令行参数的,int argc 和 char* argv[]。但是事实上main函数有三个参数,还有一个就是环境变量参数 char* env[],它是用来获取环境变量的。

环境变量的组织方式:

env是一个指针数组,它里面的指针分别指向不同的环境变量对应的字符串。

通过getenv获取环境变量

 

通过代码获取环境变量

根据main的第三个参数来获取环境变量。

环境变量的全局性

环境变量是定义在系统中的变量,那它为什么在其他的进程中也有效呢?因为环境变量具有全局属性。

在命令行上运行./mytest_g的时候,bash是一个系统进程,mytest_g会变成一个进程,是bash的子进程,而环境变量具有全局属性的根本原因是会被子进程继承下去,因为环境变量定义给bash,而子进程会全部继承下去,这就被称为环境变量。所以环境变量具有全局性,而本地变量只会在当前进程有效。

四、argc和argv

上面我们讲了main函数的第三个环境变量参数,下面我们来讲一下前两个参数。这两个是命令行参数。

命令行参数实际上是把程序名和选项传递给argv的,选项多少就需要定义argv的大小。参数的意义在于可以通过命令行选项控制使其结果不同。

我们通过下面的代码来解释:

运行程序:

我们发现上面的和命令+选项的格式是一样的,那么这两者有什么关系吗?

其实命令后面所带的选项,就是通过命令行参数来实现的。进而通过不同的选项来实现不同的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1303869.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【软考】信息系统项目管理师论文方向猜想

报喜不报忧,每天都在为鸡零狗碎推诿扯皮,属实是有辱师门。 通过软考,目前算是真正有意义的事情。 虽然都说高项的论文是个玄学,但是道听途说了一些通关感想还是蛮有启发的。 文件要求 参考了一份广西省高级工程师评审的文件&am…

【C语言】二分查找(详解)

🎥 岁月失语唯石能言的个人主页 🔥个人栏专:秒懂C语言 ⭐若在许我少年时,一两黄金一两风 一、二分查找的思路 二分查找也叫折半查找,二分查找针对的是一个有序的数据集合,每次都通过跟区间的…

C# 图解教程 第5版 —— 第18章 泛型

文章目录 18.1 什么是泛型18.2 C# 中的泛型18.3 泛型类18.3.1 声明泛型类18.3.2 创建构造类型18.3.3 创建变量和实例18.3.4 使用泛型的示例18.3.5 比较泛型和非泛型栈 18.4 类型参数的约束18.4.1 Where 子句18.4.2 约束类型和次序 18.5 泛型方法18.5.1 声明泛型方法18.5.2 调用…

宿舍智能电能表预付费系统的费控策略及应用

安科瑞电气股份有限公司 上海嘉定 201801 摘要:基于智能电能表的预付费系统平台可以实现对预付费客户的适时算费、远程费控和服务。预付费系统的费控策略包括算费子策略、催费预警提醒子策略、欠费停电子策略,介绍3个子策略的制定原则、设计流程,并以示例说明策略的实现方式,通…

每日一博 - Cache Miss Attack

文章目录 概述解决思路缓存空值键并设置短期 TTL(生存时间)使用布隆过滤器 伪代码1. 缓存空值键并设置短期 TTLa. 缓存空值键b. 设置短期 TTL 2. 使用布隆过滤器a. 集成布隆过滤器b. 查询布隆过滤器 进一步优化系统性能的建议 概述 在缓存管理中&#x…

(C++)VS下sizeof(string(““))与linux-g++下sizeof(string(““))大小区别及原因剖析

个人主页:Lei宝啊 愿所有美好如期而遇 说明 博主是x86平台,所以下面的结果是28;x64平台下是40,size_t变了,由int变long long。 接下来我们先来介绍 vs 下string的数据结构 我们可以看到有一个_Buf数组,…

【IDEA】反向撤销操作快捷键 ctrl+shift+z 和搜狗热键冲突的解决办法

当我们执行某些操作时与搜狗热键冲突,直接取消搜狗的快捷键即可!!!以下以 ctrlshiftz 为例。 在输入悬浮框右键找到更多设置 按键里面找到系统功能快捷键设置 取消掉冲突的热键即可

Word插件-好用的插件-PPT 素材该怎么积累-大珩助手

PPT 素材该怎么积累? 使用大珩助手中的素材库功能,将Word中的,或系统中的文本文件、图片、其他word文档、pdf,所有见到的好素材,一键收纳。 步骤:选中文件,按住鼠标左键拖到素材库界面中&…

IBM DMC运行在RedHat 9的FIPS模式

文章目录 环境步骤打开RedHat的FIPS模式安装DMCnssdbpk12util和certutil导入certificate导入Liberty的SSL key导入Java的certificate查看nssdb(可选) 配置jvm.options配置server.xml配置java.security配置dswebserver_override.properties重启DMC验证 常…

End-to-End Reconstruction-Classification Learning for Face Forgery Detection

一、研究背景 现有模型主要通过提取特定的伪造模式进行深度伪造检测,导致学习到的表征与训练集中已知的伪造类型高度相关,因此模型难以泛化到未知的伪造类型上使用。 二、研究动机 1.真实样本的特征分布相对更为紧凑,因此学习真实人脸之间的…

漏洞复现-华为Auth-HTTP服务器任意文件读取漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

MyBatis缓存机制流程分析

前言 在进行分析之前,建议快速浏览之前写的理解MyBatis原理、思想,这样更容易阅读、理解本篇内容。 验证一级缓存 MyBatis的缓存有两级,一级缓存默认开启,二级缓存需要手动开启。 重复读取跑缓存 可以看到,第二次…

ubuntu install sqlmap

refer: https://github.com/sqlmapproject/sqlmap 安装sqlmap,可以直接使用git 克隆整个sqlmap项目: git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev 2.然后进入sqlmap-dev,使用命令: python s…

利差是什么?anzo Capital昂首资本换个角度学利差

在交易论坛上最常问也是问的最多的一个问题就是“外汇中的利差是多少?”,今天让anzo Capital昂首资本换个角度试着找出答案。 在现代生活中,我们必须为商品和服务付费,包括金融市场上提供的商品和服务。同样的在金融市场中也需要为商品和服…

庙算兵棋推演平台配置

9月23开始,9月26完成。因为那时刚从大连回来,十一之后又一个紧急项目当项目负责人,所以隔了这么久才发出来。 我尝试进行制作平台AI,想在我的小平板上配好,最好还可以移植。于是我采用WSL(windows自带的do…

万界星空科技MES系统中的生产调度流程

MES系统生产调度的目标是达到作业有序、协调、可控和高效的运行效果,作业计划的快速生成以及面向生产扰动事件的快速响应处理是生产调度系统的核心和关键。 为了顺利生成作业计划,需要为调度系统提供完整的产品和工艺信息,MES系统生成作业计…

打工人副业变现秘籍,某多/某手变现底层引擎-Stable Diffusion 局部重绘(利用SD进行换脸)

首先明确一个概念:绘图是对整个图片进行重绘,但局部重绘是对你选中的位置重绘,这就是两个功能的不同点。 局部重绘详细步骤: 1、用画笔涂黑你想修改的地方,图片右边的蓝色点可以拖动 改变画笔大小,边缘适合用小画笔,中间用粗画笔; 2、在正向关…

C语言普里姆(Prim)算法实现计算国家建设高铁运输网最低造价的建设方案

背景: 描述:为促进全球更好互联互通,亚投行拟在一带一路沿线国家建设高铁运输网,请查阅相关资料 画出沿线国家首都或某些代表性城市的连通图,为其设计长度最短或造价最低的高铁建设方案。 要求:抽象出的图…

实战React18和TS+Vite,跟进实战阅读类App的心得分享

随着 React 18 的发布,以及 TypeScript 和 Vite 在前端开发领域的普及,使用 React 18 结合 TypeScript 和 Vite 开发实战阅读类 App 的经验已经成为了前端开发者们的热门话题。在本文中,我将分享我的心得体会,并给出一些示例代码&…

深度学习第5天:GAN生成对抗网络

☁️主页 Nowl 🔥专栏 《深度学习》 📑君子坐而论道,少年起而行之 ​​ 一、GAN 1.基本思想 想象一下,市面上有许多仿制的画作,人们为了辨别这些伪造的画,就会提高自己的鉴别技能,然后仿制者…