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

Linux:环境变量

目录

  • 一、环境变量的理解
    • (1)什么是环境变量?
    • (2)Linux中的环境变量
  • 二、环境变量的使用
    • (1)PATH环境变量
    • (2)和变量相关的指令
  • 三、环境变量与普通变量的区别

  在平时使用电脑的时候,安装某些软件需要配置环境变量,虽然我们不知道什么是环境变量,但是根据教程一步步配置,也是可以使用软件的。这篇文章来简单的聊一聊什么是环境变量,以及环境变量的作用。

一、环境变量的理解

(1)什么是环境变量?

  简单来说,环境变量就是保存参数的变量,通过环境变量让我们使用电脑更加方便。但这样其实是比较抽象的,没有体现出来在哪些方面让我们更方便了。

  其实我们在运行程序的时候都是要带上程序的路径的,这样才可以运行。如下图,我们运行test程序时,要加上它的路径。

环境变量

 【1】为什么我们运行程序要加上路径呢?

  因为要运行一个程序,就要告诉系统要去运行哪个目录中的程序,要让系统知道我们要运行的程序在哪里。./test 就代表我们告诉系统我们要运行当前目录的test程序。

 【2】我们在终端中使用的命令也是一个个的程序,但我们使用时却没有带路径,而是直接输入指令名称,这是为什么?

终端

  这是因为系统中有一个东西叫做环境变量,系统把指令程序的路径都存放在环境变量里面。我们输入一个命令后,系统就在环境变量中保存的那些路径中去寻找我们输入的命令,如果找到了就运行,如果没找到就会报错。

  如下图,系统找不到xxx指令就会报错。

错误指令

(2)Linux中的环境变量

 那么在Linux中,环境变量是如何保存呢?

  Linux中有一个数组:char ** environ,这个数组是一个全局变量,数组中的每个元素都是一个地址,一个元素就是一个字符串的地址,这个字符串就是环境变量。

 如果要在程序中使用系统的环境变量,只需要声明该数组即可使用。

二、环境变量的使用

(1)PATH环境变量

  PAHT环境变量是我们最常使用的环境变量,它保存了程序的默认搜索路径,我们如果运行了一个指令,系统就会去PATH环境变量保存的路径下去寻找这个程序。

  因此我们可以将我们自己的程序的路径添加到PATH环境变量中,那样系统就可以找到我们程序的路径,就不需要我们在运行程序时手动添加 ./

(2)和变量相关的指令

  • env:显示所有的环境变量
  • echo $变量名:显示指定的变量
  • set:查看当前环境中所有变量(包括环境变量、普通变量)
  • export 变量名:声明该变量是环境变量
  • unset 变量名:移除指定的变量

三、环境变量与普通变量的区别

(1)程序可以获取到当前环境的环境变量,但无法获取普通变量。

(2)因为环境变量可以被进程获取,因此可以用于在进程间通过环境变量传递数据。

(3)每个终端都有自己独立的运行环境,在终端A中设置的环境变量在终端B中找不到。

const char*getenv(const char * name):在程序中通过环境变量名获取环境变量数据

http://www.lryc.cn/news/35036.html

相关文章:

  • Codeforces Round 703 (Div. 2)(A~D)
  • Django项目5——基于tensorflow serving部署深度模型——windows版本
  • MySQL基础篇3
  • 携程 x TiDB丨应对全球业务海量数据增长,一栈式 HTAP 实现架构革新
  • 记一次Kafka warning排查过程
  • MySQL学习笔记(6.视图)
  • java多线程与线程池-01多线程知识复习
  • Typescript - 将命名空间A导入另一个命名空间B作为B的子命名空间,并全局暴露命名空间B
  • Windows下实现Linux内核的Python开发(WSL2+Conda+Pycharm)
  • 新闻发布网站分析及适用场景
  • 云原生时代顶流消息中间件Apache Pulsar部署实操之Pulsar IO与Pulsar SQL
  • Input子系统(一)启动篇
  • WuThreat身份安全云-TVD每日漏洞情报-2023-03-08
  • ABP IStringLocalizer部分场景不生效的问题
  • 数组(四)-- LC[167] 两数之和-有序数组
  • Mac电脑,python+appium+安卓模拟器使用步骤
  • Linux命令·find进阶
  • R语言ggplot2 | 用百分比格式表示数值
  • 【代码训练营】day53 | 1143.最长公共子序列 1035.不相交的线 53. 最大子序和
  • 消息队列理解
  • 【Linux内核一】在Linux系统下网口数据收发包的具体流向是什么?
  • 南京、西安集成电路企业和高校分布一览(附产业链主要厂商及高校名录)
  • 后端Java随机比大小游戏实战讲解
  • dolphinschedule使用shell任务结束状态研究
  • 如何用postman实现接口自动化测试
  • AHRS(航姿参考系统)IMU(惯性测量单元)和INS的分析对比研究-2023-3-8
  • 企业管理经典书籍推荐
  • JVM系列——破坏双亲委派模型的场景和应用
  • 基于智能边缘和云计算的数字经济服务细粒度任务调度机制
  • ccc-pytorch-卷积神经网络实战(6)