详解环境变量

news2024/10/7 4:24:37

目录

    • 前言
    • 一、什么是环境变量?
    • 二、查看环境变量的方法
    • 三、查看环境变量的内容
    • 四、普通变量VS环境变量
    • 五、导出环境变量
    • 六、常见的环境变量
    • 七、set命令:查看普通变量或环境变量
    • 八、C/C++语言中main函数中的参数
        • 1、main函数的第一个和第二个参数
            • 应用:写一个简单的命令行版本的计算器
        • 2、main函数的第三个参数
    • 九、获取环境变量的方式
          • 1、通过main函数的第三个参数
        • 2、通过environ变量
        • 3、通过系统调用接口getenv
    • 总结

前言

我们在Linux系统中进行操作的时候通常会发现,当我们使用系统的命令的时候,比如:ls,pwd,cd等等,通常不需要带对应的命令的路径,只需要直接敲对应的命令即可,而当我们运行自己写的程序的时候却发现必须带相关路径,如果没带路径,就会报出:command not found的错误,其实也很好理解,因为我们要执行一个命令或者程序首先肯定要找到这个程序或者命令,知道这个程序或者路径在哪里,才能够执行它,而系统中的命令不需要带路径就能执行的原因跟今天要学习的环境变量中的PATH变量有关系

一、什么是环境变量?

环境变量:环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数(变量),如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库(后面学)在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。还有其他用途等后面学完了常见的环境变量就能够理解了,环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性

二、查看环境变量的方法

  • env:用于查看系统中所有环境变量的命令
    在这里插入图片描述
  • 也可以使用env配合之前学习的文本行过滤工具:比如env|grep PATH,这样可以方便找到我们想要的环境变量
    在这里插入图片描述

三、查看环境变量的内容

通常环境变量都会存储相应的值,比如:PATH环境变量存储的是常用指令的路径,方便系统快速找到对应命令的路径,从而执行对应命令
在这里插入图片描述
比如,现在在系统中有一个环境变量叫做PATH,那么我们该怎么查看这个环境变量的内容呢?
我们可以采用echo命令

  • 如果只是echo 环境变量
    在这里插入图片描述
    显然结果不对
  • 正确的方式:echo $环境变量,如:echo $PATH
    在这里插入图片描述

四、普通变量VS环境变量

  • 普通变量:直接在命令行上定义的变量
    在这里插入图片描述

如上的aaaa就是一个局部变量,或者称为普通变量,可以通过echo $变量名需要知道的是,它是不能通过环境变量找到的
在这里插入图片描述

  • 环境变量:上面已经介绍过环境变量的概念,也介绍了查看系统环境变量的方法,其在系统中的展示方法通常为,环境变量=值:值….,环境变量中不同的值是通过:隔开的
    在这里插入图片描述

五、导出环境变量

Linux系统中导出环境变量的方法是使用export命令,使用方法:export 环境变量名=环境变量的值,比如:export bbbb=1,意思为:导出一个环境变量为bbbb,这个环境变量的值为1
在这里插入图片描述

六、常见的环境变量

在这里插入图片描述
以上圈出的就是常见的环境变量,下面逐一进行讲解

  • HOSTNAME:查看当前主机的类型
    在这里插入图片描述
  • SHELL:查看SHELL
    在这里插入图片描述
  • HISTSIZE:查看能够存储的历史命令的最大条数
    在这里插入图片描述
  • SSH_CLIENT:查看IP地址
    在这里插入图片描述
  • USER:查看正在使用Linux系统的人
    在这里插入图片描述
  • PATH:查看一些常见的命令存放的路径

在这里插入图片描述
测试PATH:

  1. 创建一个path.c文件和makefile文件
    在这里插入图片描述
    在这里插入图片描述

  2. 编译形成可执行程序
    在这里插入图片描述

  3. 运行可执行程序,这里需要知道我们如果加上路径(./path)那么程序就可以正常运行,但是如果没有加入路径的话,那就不能正常运行该程序
    在这里插入图片描述

  • 那么应该怎么处理,才能够让我们不加入可执行程序的路径也能够使程序正常运行呢??
  1. 将可执行程序的路径加入PATH环境变量中:通过export $PATH=PATH:当前可执行程序的路径
  2. 使用echo命令查看加入路径之后的PATH环境变量
    在这里插入图片描述
  3. 运行可执行程序 :此时执行的命令不再需要加入可执行程序的路径了在这里插入图片描述
  • PWD:查看当前的路径
    在这里插入图片描述
  • HOME:查看当前用户的家目录
    在这里插入图片描述

七、set命令:查看普通变量或环境变量

  • 查看普通变量
    在这里插入图片描述
  • 查看环境变量
    在这里插入图片描述

八、C/C++语言中main函数中的参数

我们平时在写C语言或者C++语言中的main函数时一般是不带参数的,但是实际上,main函数是可以带三个参数的,下面将详细讲解相关参数的作用

  • 一般情况
    在这里插入图片描述
  • 带参数的情况
    在这里插入图片描述

1、main函数的第一个和第二个参数

  • 第一个参数argc:表示argv数组中存放的字符指针个数
  • 第二个参数argv:存储的是相关的字符指针,指针指向的是一个个的字符串
  1. 将main中的路径加入环境变量使运行可执行程序时不需要加入路径
    在这里插入图片描述
    通过以上的实验结果,我们可以看到数组中的第一个指针指向的内容(字符串)是可执行程序文件的名字,接下来我们可以加入一些选项来丰富实验内容
  2. 加入选项-a-b-c-d
    在这里插入图片描述
    在这里插入图片描述

从实验结果可以看出来,数组中的第一个指针指向的内容是可执行程序的文件名,第二个开始的指针指向的内容是依次加入后的选项

应用:写一个简单的命令行版本的计算器
  1. 建立一个cal项目

  2. 创建cal.c文件和makefile文件
    在这里插入图片描述
    在这里插入图片描述

  3. 使用
    在这里插入图片描述
    在这个简单的命令行计算器的代码中需要注意一些点:

  4. 命令行参数均为字符串,因此,在键盘上获得的数字也是字符串,所以在进行计算之前一定要先使用atoi将其转化为整数

  5. 在代码中可以加入该计算器的使用方法

2、main函数的第三个参数

main函数的第三个参数叫做env,叫做环境变量

  1. 创建一个项目
  2. 创建main.c文件和makefile文件
    在这里插入图片描述
    在这里插入图片描述
  3. 结果显示

在这里插入图片描述
从上面的实验结果我们可以看到,查看系统中的环境变量除了采用env命令进行查看之外还可以通过C语言函数中的main函数的第三个参数进行查看

九、获取环境变量的方式

1、通过main函数的第三个参数

通过main函数的第三个参数查看到系统中所有的环境变量之后,可通过echo $环境变量进行查看获取

2、通过environ变量

envion是系统指定的一个变量
在这里插入图片描述
在这里插入图片描述
通过这个方法同样可以将系统中的所有环境变量显示出来

3、通过系统调用接口getenv

  • 查看getenv系统调用接口
    在这里插入图片描述
  • 创建test.c文件和makefile文件
    在这里插入图片描述
    在这里插入图片描述
    在使用getenv系统接口的时候一定要注意包含头文件stdlib.h
  • 实验结果
    在这里插入图片描述

总结

今天我们主要学习环境变量的相关概念,以及学习了如何查看系统中所有的环境变量和查看具体环境变量的内容,还有学习如何导出新的环境变量和将自己写好的可执行程序的路径加入PATH环境变量,最后还介绍了获取环境变量的几种常见的方式,在介绍之前还学习了C/C++中main函数的参数的意义和作用

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

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

相关文章

IDEA提交本地项目到Gitee远程仓库

上一篇【Git的安装、配置、使用02【Idea对GitHub支持使用】】https://liush.blog.csdn.net/article/details/123446538 1. 新建仓库 2. IDEA登录gitee账号 3. 选择当前的项目作为本地库(相当于初始化) 4. 将项目添加到暂存区中 5. 将暂存区项目文件提交…

【CSS】CSS文本样式【CSS基础知识详解】

👨‍💻个人主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 本文章收录于专栏 【CSS】 【CSS专栏】已发布文章 📁【CSS基础认知】 📁【CSS选择器全解指南】 &#x1f4c1…

十万部冷知识:“澳大利亚”为什么属于亚洲球队?

在2022年卡塔尔世界杯上,总共有6支球队入围,他们分别是日本队,韩国队,沙特队,伊朗队,澳大利亚队,还有就是东道主卡塔尔队。但是我们知道,澳大利亚,并不是亚洲的国家&…

Flutter 项目中管理你的 Assets Texts Widgets

Flutter 项目中管理你的 Assets Texts Widgets 原文 https://medium.com/mustafatahirhussein/managing-your-assets-texts-and-widgets-professionally-a-must-read-flutter-guide-ffb93b19eff0 前言 这篇文章是 Mustafa Tahir 写的关于 Flutter 项目管理的技巧,可…

音视频SDP协议详解(描述会话的协议)

前言 ①SDP协议是会话描述协议(Session Description Protocol)的缩写,是一种会话描述格式,一种描述流媒体初始化参数的格式,为描述多媒体数据而设计。 文末卡片领取音视频免费资料合集 (流媒体是指在传输过…

csdn月入过万的作者是如何练成的?

很多年前,我有一个成为作家的梦想。 后来从事了技术,觉得与作家梦越来越远了。 虽然梦想远去,但写字的欲望没有停止。 这些年,一直在有道云笔记上记录自己的工作心得,偶尔会来csdn上写一写。 我在csdn真正发力的时候…

自己怎么搭建一个网站?【自己建立网站】

说到建立网站,有些动手能力比较强的小伙伴可能就在想自己怎么搭建一个网站。想自己搭建一个网站,至少也是需要看懂html和cssdiv这些编程代码的,如果不懂代码就只能另寻方法了。那么自己怎么搭建一个网站? 现在市面上有很多的建站…

数据分析基础入门_环境安装

前言 python版本为3.6.8 主要记录一下数据分析入门或者人工智能入门基础所用到的库文件的环境安装过程。 1.批量安装所需库文件 新建 requirements.txt 文件,将以下内容复制到文本文件中保存。 matplotlib2.2.2 numpy1.14.2 pandas0.20.3 tables3.5.2 jupyter1…

Qt 中捕获三方库自身标准打印方法

【写在前面】 很多时候,我们为了方便调试,常常需要加入一些打印。 例如 Qt 中的 QDebug,C 和 C 中的 printf / cout 等等,又或者是三方库提供的标准打印接口。 然而大部分时候,这些打印相当不统一(格式和位置)&#xf…

高清架构整洁之道PDF下载

架构整洁之道高清PDF下载,请扫描如下二维码,支付3元。并加微信,发给你。谢谢。

你想制作一款属于自己的游戏吗?

💂 个人网站:【海拥】【摸鱼游戏】【神级源码资源网站】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 想寻找共同学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】💬 免费且…

无线传感器网络(Wireless Sensor Networks)概述

文章目录IntroductionSensor Mote PlatformsLow-End-PlatformsHigh-End-PlatformsWSN Architecture and Protocol StackWSN Design ConsiderationsHardware ConstraintsFault ToleranceScalabilityProduction CostWSN TopologyTransmission MediaPower ConsumptionSensingData …

编译原理11:LR分析、句柄、LR文法

LR分析法概述 句柄和规范归约 LR分析法 s:shitf 移进 r:reduce 规约 LR分析示例 LR文法 k越大,处理能力越强,但复杂度越高 会人工消除冲突,使得符合LR文法 小结

动态规划算法学习一:DP的重要知识点、矩阵连乘算法

文章目录前言一、矩阵连乘问题1、问题描述2、完全加括号3、问题分析4、最优子结构性质5、状态表示和递推方程6、自问题个数和求解顺序二、计算最优值示例1、问题描述2、计算最优值示例*****3、构造最优解4、算法实现三、基本要素-最优子结构四、基本要素-重叠子问题五、递归方法…

具有生物活性的天然产物——雷公藤

雷公藤为卫矛科雷公藤属植物,是我国一种资源比较丰富的传统中草药,迄今为止,已有超过 500 多种化合物从雷公藤中分离出来,包括萜类、生物碱类、黄酮类、木脂素类等。其结构多样的有效成分具有抗炎、抗感染、免疫抑制和抗肿瘤等作用…

腾讯云TRTC服务实现Web视频会议

腾讯云TRTC服务实现Web视频会议 背景 近期公司承接了某高校智慧校园的项目建设工作,其中在家校协作的板块中需要进行视频教学,以及线上屏幕共享,为了完成这一需求,我在自研与第三方服务的选择之间选择了第三方,主要因…

【交通标志识别】基于BP神经网络实现交通标志识别系统(含语音报警)附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

java在Windows配置Path环境变量

java在Windows配置Path环境变量 在命令行窗口输入java时,命令行提示’java’ 不是内部或外部命令,也不是可运行的程序或批处理文件。 第一步:鼠标右键点击我的电脑,点击“属性” 第二步:点击“高级系统设置” 第三步&…

ProNas-振动噪声工程界新一代的前沿技术

作者:张工 随着汽车、船舶、高铁动车、轨道车辆、商用飞机、起重机械等交通运输工具和风电机组、家用电器、航天器等振动噪声。仿真模型的日益精细和庞大,现代噪声、振动及舒适性(NVH)仿真计算及验证领域面临着计算效益&#xf…

FL Studio21水果体验尝鲜版音乐宿主程序FL2023

FL Studio21从大家看来的音乐玩具,逐渐发展成相当严肃的DAW。如今,正被全球大量用户使用。它总是有着自己的方式,在工作流程和设计上,都不与竞争者相仿。 FL Studio是一款功能强大的虚拟音乐制作软件,通过它创作wav,MP3,MIDI,loo…