新闻详情

新闻详情

首页 / 资讯中心 / 详情

操作系统环境变量

发布时间:2026/9/28 20:45:06来源:尧图网络
操作系统环境变量
一.环境变量的概念环境变量操作系统中用来指定操作系统运行环境的一些参数。如在C/C代码链接的过程中我们明明没有给编译器库的地址但它还是能找到这是因为有环境变量辅助编译器查找。二.命令行参数main函数有参数吗答案是可以有的像这个代码就是我们在命令行给main函数传递的参数其中变量argv用来储存参数值argc记录了所传参数的个数。那这是怎么做到的呢也就是说当我们输入命令后由bash来对该命令进行分割并创建命令行参数表当bash创建子进程执行代码时它可以将命令行参数表传过去这样main就得到了参数。三.认识一些环境变量环境变量到底有什么用呢认识PATH学完指令后我们知道所有的指令本质上都是可执行文件使用指令就是调用这些文件但我们可以发现调用ls、cd…这些指令时我们根本没有给bash这些文件的绝对路径那它是怎么调用的这是因为系统里有环境变量PATH的存在它保存了一些路径其中就有找到这些指令的路径。我们可以用echo $环境变量的形式查看环境变量的具体内容那这是不是意味着我们只要把某些路径加入进PATH中就可以让自己写的一些程序调用时不需要给路径没错。如果这样改的话我们会发现一些指令我们不能直接用了所以我们要做的应该是在原本的值上加上目标路径:认识其他我们可以用指令env来查看系统内的所有环境变量HOSTNANE保存了该系统的主机名SHELL默认登陆shell(命令行解释器)的路径HISTSIZE保留历史命令的最大个数我们可以用history查看我们在该系统下输入的历史命令其最大个数就取决于HISTSIZEOLDPWD上一个工作目录SSH_TTY当前用户说对应的终端USER表示当前有效用户名PATH记录一些路径是大部分指令可以不用路径的原因PWD当前工作目录HOME家目录路径LOGNAME表示用户登录时使用的用户名(一般都和USER一样)。四.获取环境变量环境变量怎么来怎么维护环境变量的值是由系统配置文件得来的这些文件储存在硬件中当我们以用户身份登录操作系统后OS会给我们一个bash它就会从系统配置文件中读取信息并给这些环境变量赋值并用字符串数组维护起来无论是环境变量表还是命令行参数表都是靠char**指针维护的都是以NULL结尾。环境变量相关命令echo $环境变量查看指定环境变量信息env查看所有环境变量export创造新的环境变量或修改已有环境变量unset 环境变量删除目标环境变量export代码中获取环境变量方法一main函数中其实可以有三个参数。第三个变量也是字符串数组可以接收父进程传来的环境变量。方法二函数getevn()可以获取指定环境变量的值我们可以用这种方法去完成某些特定工作如只让指定的人执行该代码。方法三在unistd.h文件中有全局变量char ** environ它保存着环境变量环境变量的特性环境变量具有全局性当bash创建子进程执行程序时它同时会把环境变量表的地址传给子进程当这个子进程再创建子进程时表的地址也会继续传递下去。但如果在这个体系中有进程修改了环境变量的值那么它就会进行写实拷贝(就像父子进程共用代码数据一样)只让该进程环境变量的值进行改变。那这样对export来说是否有些奇怪当我们使用export时就说明环境变量一定发生了改变但它不应该时bash创建子进程执行的吗要改变也是export对应的进程中的环境变量改变为什么bash中的环境变量会变这是因为export是bash的内建命令(built-in command)它不是bash创建子进程执行而是由bash自己执行。五.补充为什么main函数有不同的参数形式虽然我们总说main函数是程序的入口当但OS执行起来时这句话并不成立因为OS中是有函数会调用main函数的在Linux中这个函数叫_start在它调用main函数时OS会先扫描main有几个参数再通过_start中的不同分支调用main函数。本地变量在Linux中有本地变量的概念在命令行直接创建即可可以通过创建变量去完成某些工作。bash本身就是一种脚本编译器它很依赖本地变量。我们用指令set可以查看所有本地变量和环境变量。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Python+KNN手写拼音识别课程设计:图像预处理与分类实战 2026/9/28 21:29:28

Python+KNN手写拼音识别课程设计:图像预处理与分类实战

简介:面向高校机器学习课程设计场景,这份基于Python开发的手写拼音识别资源以KNN(K最近邻)算法为分类核心,覆盖从手写图像输入到拼音类别输出的完整流程。包体包含2589个文件,主体为1649个txt与924个jpg&am…

阅读更多 →
ESP32-C3中GPIO8/GPIO9的I2C硬件直连原理与实战应用 2026/9/28 21:29:22

ESP32-C3中GPIO8/GPIO9的I2C硬件直连原理与实战应用

1. 为什么GPIO8和GPIO9在ESP32-C3-Super-Mini上“不按常理出牌”?刚拿到ESP32-C3-Super-Mini开发板时,我第一反应是——这板子太小了,小到连USB口都得靠Type-C转接线才能插稳。但真正让我停下调试进度、反复翻手册的,不是它的尺寸…

阅读更多 →
ESP32P4与ESP32C6异构通信:SDIO互联架构设计与性能优化实战 2026/9/28 21:29:22

ESP32P4与ESP32C6异构通信:SDIO互联架构设计与性能优化实战

1. 异构通信系统架构的整体设计思路1.1 为什么要在两颗芯片之间做SDIO互联做过嵌入式项目的人大概都有这种体会:一颗芯片既要跑高速数据采集,又要处理无线通信协议栈,还要兼顾实时控制,算力和外设资源很快就会捉襟见肘。我最早接触…

阅读更多 →
ESP32-P4与C6异构通信:SDIO高速链路从硬件到协议栈的实战调优 2026/9/28 21:29:22

ESP32-P4与C6异构通信:SDIO高速链路从硬件到协议栈的实战调优

ESP32-P4 这颗芯片刚出来的时候,我盯着它的规格书看了很久——双核 RISC-V、H.264 硬编解码、MIPI 接口、以太网 MAC,唯独缺了无线。乐鑫的解法很直接:让 P4 专注做高性能计算和多媒体处理,无线连接交给 C6 这类带 Wi-Fi 6 和 BLE…

阅读更多 →
离线人脸识别部署:SeetaFace6在无网无GPU工控机上的C#全链路实践 2026/9/28 21:29:15

离线人脸识别部署:SeetaFace6在无网无GPU工控机上的C#全链路实践

简介:这是一份面向C#开发者与人工智能初学者的离线人脸识别实践项目,基于开源SeetaFace6引擎构建,适用于Windows与Linux平台的.NET桌面应用开发场景,解决身份认证、人脸比对等实际业务需求。资源共401个文件,包含130个…

阅读更多 →
NET 生态下的高性能嵌入式时序数据库合集 - AI开源项目(18):为 openclaw.net 集成 ElBruno.MempalaceNet 记忆系统 2026/9/28 21:29:14

NET 生态下的高性能嵌入式时序数据库合集 - AI开源项目(18):为 openclaw.net 集成 ElBruno.MempalaceNet 记忆系统

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉