Linux操作系统学习(了解环境变量)
文章目录
- 环境变量初识
- 除了上述介绍的PATH,还有一些常见的环境变量如:
- 查看环境变量方法 :
- 环境变量的基本概念:
- 本地变量:
环境变量初识
环境变量解释起来比较抽象,先看示例:
#include <stdio.h>
#include <unistd.h>
#define NUM 100
#include <string.h> int main(){char bar[NUM+1];memset(bar,'\0',sizeof(bar));const char* lable = "|/-\\";int i = 0;while(i <= 100){printf("[%-101s][%%%3d](%c)\r",bar,i,lable[i%4]);//%% 输出一个%fflush(stdout);bar[i] = '=';bar[i+1] = '>';i++;usleep(50000);//单位是毫秒}printf("\n");return 0;}
上面是一个进度条小程序的代码,gcc print.c -o print 编译后想要运行它,需要输入 ./print,./代表当前目录下。但是有一个问题,为什么gcc pwd vim 这些不需要加./,这些命令程序的代码在哪?
答案是他们都存在环境变量中,通过 PATH(是一种环境变量)可以查看 :

也就是说,这些不需要加路径( ./ )就可以执行的指令,是因为他们的路径都拷贝到环境变量中了;那么回到上面的进度条小程序,把它的路径也拷贝到环境变量中,操作如下:

(上述把print的路径加入到环境变量,只在本次会话有效,关闭退出时就会清除)
或者在windows中桌面的快捷方式,也和环境变量有关

除了上述介绍的PATH,还有一些常见的环境变量如:
- HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)
- SHELL : 当前Shell,它的值通常是/bin/bash
查看环境变量方法 :
- echo $NAME (NAME是你的环境变量名称)
有了上述介绍的示例再来看环境变量的概念会好理解一些了
环境变量的基本概念:
一般是指在操作系统中用来指定操作系统运行环境的一些参数
环境变量是具有特殊作用/特殊用途的变量;环境变量也是一种变量(变量名+内容),本质是OS在内存中/磁盘中开辟空间,用来保存系统相关数据的,所以也是系统自己给自己定义的变量;
获取环境变量的方法:
- 命令行第三个参数
#include <stdio.h>
int main(int argc, char *argv[], char *env[])
{int i = 0;for(; env[i]; i++){printf("%s\n", env[i]);}return 0;
}
- 通过第三方变量environ获取
#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;
}

在没包相关头文件时,environ前要加extern
- getenv 通过系统调用获取环境变量
#include <stdio.h>
#include <stdlib.h>
int main()
{printf("%s\n", getenv("PATH"));return 0;
}
实际应用中,常用getenv(和putenv)函数来访问特定的环境变量,前两种不推荐也不常用。
环境变量还具有全局性
比如用fork创建子进程时,PPID是他的父进程,而父进程的PPID是谁呢,答案是bash,bash是一种命令行解释器,一般命令行启动的进程,他们的父进程都是bash。
在我们登录Linux时,bash会从系统中读取环境变量,存在一个环境变量列表中(如上图),那我们在子进程中可以用环境变量吗?
请看如下代码:

当把MYENV导出为环境变量时,bash的环境变量列表就多了一个MYENV而 ./myproc执行的指令的进程是bash的子进程发现可以执行MYENV这个环境变量相关的操作;
说明子进程可以获取到父进程环境列表中的环境变量 ====> 子进程继承了bash的环境变量 , bash的所有子进程都可以看到bash环境列表中的环境变量,就如同用fork创建子进程,子进程继承父进程的代码和数据一样 是可以继承的
所以,bash的所有子进程都可以获取到bash的环境列表,也就是环境变量具有全局属性
本地变量:
相关文章:
Linux操作系统学习(了解环境变量)
文章目录环境变量初识除了上述介绍的PATH,还有一些常见的环境变量如:查看环境变量方法 :环境变量的基本概念:本地变量:环境变量初识 环境变量解释起来比较抽象,先看示例: #include <stdio.…...
数据分析思维(六)|循环/闭环思维
循环/闭环思维 1、概念 在很多的分析场景下,我们需要按照一套流程反复分析,而不是进行一次性的分析,也就是说这套流程的结果会成为该流程的新一次输入,从而形成一个闭环,此时的分析思维我们称之为循环/闭环思维。 常…...
C++:类和对象(下)
文章目录1 再谈构造函数1.1 构造函数体赋值1.2 初始化列表1.3 explicit关键字2 static成员2.1 概念2.2 特性3 友元3.1 友元函数(流插入(<<)及流提取(>>)运算符重载)3.2 友元类4 内部类5 匿名对…...
ASP.NET Core MVC 项目 AOP之IResultFilter和IAsyncResultFilter
目录 一:说明 二:IActionFilter同步 三:IAsyncActionFilter异步 一:说明 IResultFilter同步过滤器与IAsyncResultFilter异步过滤器常常被用作于渲染视图或处理结果。 IResultFilter同步过滤器执行顺序: 1:执行控制器中的构造函数,实例化控制器 2:执行具体的Acti…...
jstack排查cpu占用高[复习]
这样就可以看到占用CPU高的代码位置。 总结:就是先查到占用高的应用和具体的线程,然后根据线程到堆积信息查找即可。 不过堆栈信息非十进制,需提前把线程号转为十六进制。 这样就可以看到占用CPU高的代码位置。 总结:就是先查到…...
网络安全-Pyhton环境搭建
网络安全-Pyhton环境搭建 https://www.kali.org/get-kali/#kali-installer-images—kali官网下载地址 python这个东东呢 是目前来说最简单,方便的开源的脚本语言 广泛用于Web开发,AI,网站开发等领域 python要装2和3 为什么要安装两个版本…...
SpringBoot Mybatis 分页实战
pageInfo的属性 pageNum:当前页 pageSize:页面数据量 startRow:当前页首条数据为总数据的第几条 endRow:当前页最后一条数据为总数据的第几条 total:总数据量 pages:总页面数 listPage{}结果集 reasonable …...
计算机断层扫描结肠镜和全自动骨密度仪在一次检查中的可行性
计算机断层扫描结肠镜和全自动骨密度仪在一次检查中的可行性 Feasibility of Simultaneous Computed Tomographic Colonography and Fully Automated Bone Mineral Densitometry in a Single Examination 简单总结: 数据:患者的结肠镜检查和腹部CT检查…...
Java多级缓存是为了解决什么的?
前言 提到缓存,想必每一位软件工程师都不陌生,它是目前架构设计中提高性能最直接的方式。 缓存技术存在于应用场景的方方面面。从网站提高性能的角度分析,缓存可以放在浏览器,可以放在反向代理服务器,还可以放…...
MongoDB--》索引的了解及具体操作
目录 索引—index 索引的类型 索引的管理操作 索引的使用 索引—index 使用索引的原因:索引支持在MongoDB中高效地执行查询。如果没有索引,MongoDB必须执行全集合扫描,即扫描集合中的每个文档,以选择与查询语句匹配的文档。这…...
Python open()函数详解:打开指定文件
在 Python 中,如果想要操作文件,首先需要创建或者打开指定的文件,并创建一个文件对象,而这些工作可以通过内置的 open() 函数实现。open() 函数用于创建或打开指定文件,该函数的常用语法格式如下:file ope…...
CentOS Stream 9尝鲜安装教程
作者:IT圈黎俊杰 一、下载CentOS Stream 9安装介质 在CentOS官网可以下载到CentOS Stream 9的安装介质,正面列出ISO介质的下载链接地址: https://download.cf.centos.org/9-stream/BaseOS/x86_64/iso/CentOS-Stream-9-20221019.0-x86_64-dv…...
Ambire AdEx 2023 年路线图
Ambire AdEx 是为简化 web3 显示广告而建立的,领先于时代。到 2023 年,它将专注于服务用户需求,同时保持其作为区块链隐私解决方案的核心,反对传统的数字广告模式。 回顾 2022 年 2022 年,AdEx 网络处理了超过 1 亿次展…...
两种特征提取方法与深度学习方法对比的小型金属物体分类分析研究
本文讨论了用于对包括螺丝、螺母、钥匙和硬币在内的小型金属物体进行分类的两种特征提取方法的效率:定向梯度直方图 (HOG) 和局部二进制模式 (LBP)。首先提取标记图像的所需特征并以特征矩阵的形式保存。使用三种不同的分类方法(非参数 K 最近邻算法、支…...
传奇私服搭建网站的几种方法
搭建网站的几种方法:一些人,连简单的搭建网站都不会,还要请技术帮忙,真是牛B,这里简单介绍下几种办法一:2003系统下,直接使用IIS,这个太简单了,桌面上就有IIS,…...
i.MX8MP平台开发分享(clock篇)- 各类clock的注册
专栏目录:专栏目录传送门 平台内核i.MX8MP5.15.71文章目录 1、关键数据结构1.1 clk_hw1.2 clk_hw_onecell_data2.一个clk的注册过程2.1 fixed clk2.2 pll14xx2.3 fixed factor2.4 mux2.5 composite2.6 gate1、关键数据结构 1.1 clk_hw clk_hw是描述一个时钟信息的最小单元。…...
java ssm计算机系统在线考试平台idea
本系统主要包括以下功能模块学生、教师、班级、考试评阅、在线考试、试题内容、考试等模块,通过这些模块的实现能够基本满足日常计算机系统平台的操作。 本文着重阐述了计算机系统平台的分析、设计与实现,首先介绍开发系统和环境配置、数据库的设计&…...
C语言(字符串函数)
这章的内容记得引用<string.h>头文件 目录 1.strlen() 2.strcat() 3.strncat() 4.strcmp() 5.strncmp() 6.strcpy() 7.strncpy() 8.sprintf() 8.strchr() 9.strpbrk() 10.strrchr() 11.strstr() 1.strlen() 用于统计字符串的…...
Maxwell工作流程详解
要介绍maxwell的工作原理,首先需要讲一下mysql主从复制的原理 mysql主从复制原理: 如上图,左边是master主节点,右边是slave从节点 工作流程: 1.往主节点mysql的数据库中写入数据,产生数据变化,…...
13- EM算法与GMM高斯混合 (聚类算法) (算法)
最大期望算法(EM算法) ,曾入选“数据挖掘十大算法”中,是最常见的隐变量估计方法,在机器学习中有极为广泛的用途,例如常被用来学习高斯混合模型的参数。EM算法是在概率模型中寻找参数最大似然估计或者最大后验估计的算法ÿ…...
XZ1851输入电压6-40V 输出电流2.5A 输出电压ADJ(小于39V)
产品概述 XZ1851 是一款内置功率 MOSFET的单片降压型开关模式转换器。 XZ1851在 6-40V 宽输入电源范围内实现2.5 A最大输出电流,并且具有出色的线电压和负载调整率。 XZ1851 采用 PWM 电流模工作模式,环路易于稳定并提供快速的瞬态响应。 XZ1851 外部提供…...
超实用的三角高程观测记录及平差计算表格程序
三角高程观测记录及平差计算表格程序:通过给出的高程点的坐标(边长)和高程,只要填写点号,就能实现自动反向计算测量过程,并自动生成四个测回的观测记录。 非常实用方便,表格界面简洁,通用&#…...
2026年云储存哪个好用?5款免费又便捷的工具深度盘点
在如今这个数字化时代,云储存软件成为了我们存储、管理和共享数据的得力助手。无论是个人用户保存生活照片、工作文档,还是企业团队协作共享资源,都离不开云储存。 然而市场上软件众多,到底哪个才真正好用?为了帮助大…...
CAN总线大数据传输的解决方案
CAN总线通讯最多传输8个字节,如果需要传输大量数据该怎么办呢?这个问题工业界有很多成熟的解决方案,我现在就来详细为你介绍各种处理方法。 一、CAN协议的限制原因 CAN帧的数据场限制为8字节,主要是为了保证: • 实时性…...
2026年,如何甄选一家真正靠谱的圆盘刀片工厂?
在冶金、包装、印刷、食品等制造业的精密加工环节,圆盘刀片(也称圆刀片)是决定裁切精度、效率与成本的核心耗材。随着2026年制造业对智能化、精细化需求的进一步提升,选择一家技术过硬、服务可靠的刀片供应商,已成为企…...
抖音无水印批量下载工具终极指南:免费开源工具助你高效管理内容
抖音无水印批量下载工具终极指南:免费开源工具助你高效管理内容 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 还在为逐个下载抖音视频而烦恼吗?面对喜欢的创作者主页,你…...
Cogito-3B量化部署实测:GTX1650/RTX3050/RTX4060不同显卡配置对比
Cogito-3B量化部署实测:GTX1650/RTX3050/RTX4060不同显卡配置对比 1. 测试背景与目标 Cogito-v1-preview-llama-3B作为一款性能出色的3B参数混合推理模型,在实际部署中面临显存占用的挑战。本次测试旨在评估该模型在不同消费级显卡上的量化部署表现&am…...
Degrees of Lewdity中文本地化终极指南:从零开始畅玩完整汉化版
Degrees of Lewdity中文本地化终极指南:从零开始畅玩完整汉化版 【免费下载链接】Degrees-of-Lewdity-Chinese-Localization Degrees of Lewdity 游戏的授权中文社区本地化版本 项目地址: https://gitcode.com/gh_mirrors/de/Degrees-of-Lewdity-Chinese-Localiza…...
ArcGIS里坐标系搞混了怎么办?一份拯救‘空间参考错误’数据的实战排查指南
ArcGIS坐标系混乱急救手册:从定位问题到精准修复的全流程指南 当你在ArcGIS中加载多个来源的空间数据时,是否遇到过这些令人抓狂的场景?精心收集的行政边界图层突然跑到了撒哈拉沙漠;水文监测点数据明明采集于长江流域,…...
基于springboot个人二手书交易平台设计与开发(源码+精品论文+答辩PPT等资料)
博主介绍:CSDN毕设辅导第一人、靠谱第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交…...
