Linux : 环境变量

news/2025/3/5 8:07:20/

目录

一 环境变量

1.基本概念

二 常见环境变量

三 查看环境变量的方法

1.env:查看系统中所有环境变量

2. echo $NAME 

  四 如何不带路径也能运行的自己的程序

 1.将自己的程序直接添加到PATH指定的路径下

 五 环境变量与本地变量

1.本地变量

2. 环境变量 

六C、C++中main()函数中的参数

1. agrc和argv参数 

2. main()的第三个参数 env

七 获取环境变量的方法

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

2.通过environ变量获取

八环境变量具有全局性 


一 环境变量

1.基本概念

我们在Linux命令行中输入指令的时候,如我们在不同的目录或者文件夹下输入ls、pwd、cd等等命令的时候,我们并没有带路径的名称,但是系统仍然给出了我们正确的反馈,那么系统是怎么知道我们这个时候是在哪个路径下呢?而我们在执行自己的程序的时候往往需要带上路径才能执行官,比如上章节的 ./process(要加当前路径)否则就会报错。这一切都与环境变量中的PATH(path 路径)变量有关。

所以来说,环境变量就是在操作系统中用来指定操作系统运行环境的一些参数。

  • 对于操作系统中可以直接在命令行使用、不需要指定路径的这些指令(程序), 因为他们的路径已经被添加到了操作系统的环境变量中 。
    当在操作系统的命令行不指定路径输入指令的时候, 操作系统会自动地在PATH环境变量 设置的路径中搜索是否存在与指令相匹配的程序。如果可以找到那就执行, 如果找不到, 那就会提示 command not found。


二 常见环境变量

  • PATH : 指定命令的搜索路径
  • HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)
  • SHELL : 当前Shell,它的值通常是/bin/bash

✍:环境变量可以理解为全局变量


三 查看环境变量的方法

1.env:查看系统中所有环境变量

2. echo $NAME 

我们可以使用echo $NAME 的方法查看,NAME是环境变量的名称。

echo命令的主要作用是用于在终端输出文本.


  四 如何不带路径也能运行的自己的程序

上面我们知道了凡是在PATH的路径下的命令(像ls pwd )在运行的时候都不需要添加路径,那么我们能否将自己写的程序添加进这个路径下呢?此时自己的程序再执行的时候是不是也和这些命令一样不需要加路径了呢?

 1.将自己的程序直接添加到PATH指定的路径下

  • 首先,查看可执行程序当前所处的路径,pwd
  • PATH=$PATH:新路径 
  • 运行程序

🚴remark

  • export也可以设置环境变量,但是不能用export PATH=新路径,因为”=“是赋值的意思,这样操作就用会新的路径覆盖掉原来的默认的PATH的路径,这样会导致你的程序可以运行,但是原来在默认路径下的其他命令却执行不了。
  • PATH=$PATH:新路径 这里 $PATH可以直接表示PATH原来的內容 ”:“是分隔符。
  • 给PATH环境添加新路径,其实就是把新路径下的程序、软件安装到了操作系统中,让操作系统可以找到它。

 五 环境变量与本地变量

环境变量:为了理解可以认为全局变量;本地变量:局部变量

1.本地变量

  • 直接在命令行上定义的变量,类似C语言的定义变量
  • 既然称为本地变量,当然不能在环境变量中找到
  • 使用set也可以查看本地变量

2. 环境变量 

export  环境变量名=环境变量值

unset 环境变量:可以将创建的环境变量删除


六C、C++中main()函数中的参数

 我们在进行C或者C++编程的时候,主函数main()都不带参数,但是这并不意味着它没有参数,相反它有着三个参数。

  #include<stdio.h>2 int main(int argc,char* argv[],char* env[])3 {4                                                       5     return 0;6 }           

1. agrc和argv参数 

char* argv[]  :表示的是指针数组,数组存储着字符串,int   argc  表示数组中字符串个数。 

那么这个指针数组的内容是什么,我们可以对其进行遍历一下。

当我们运行可执行程序后,如下  

 🏦小结:

  •  当我们不带任何选项运行./mymian后,可以看到数组的第0个元素事实上就是可执行程序本身。
  • 当我们带上多个选型进行运行后,可以看到这些选项也是该数组中的元素了。 也就是说, 我们给main()函数添加的 argc 和 argv参数, 其中 argc表示argv数组中元素的个数, 而argv数组中的元素 是由命令行参数提供的, 传入的元素是程序名以及选项。
  • 这样做的好处:程序可以获取到我们们用户输入的选项,从而实现一些的选项所对应的功能。类似我们在shell命令行中输入的带选项的命令,如 ls -al 、rm -f一样。

2. main()的第三个参数 env

main()函数的第三个参数也是一个数组,存储的就是字符串指针,它的名字是env,和环境变量有关,我们用循环将它打印出来看看。

测试结果:为环境变量


七 获取环境变量的方法

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

通过main函数的第三个参数,我们可以直接在程序中遍历env数组的内容,然后将其内容依次打印显示在显示屏上。

2.通过environ变量获取

 


八环境变量具有全局性 

🍰总结:

当我们每次启动操作系统时,系统都会创建一个bash进程,其可以派生出很多的子进程,如果我们需要在命令行中运行自己的程序时,这个bash进程总是会自己创建一个子进程,让子进程代替他自己去执行该程序。这就是为什么我们每次启动系统后(中途不关机),无论怎么运行、运行多少次自己的程序,该进程的父进程的PID,也就是该进程的PPID永远不变的原因,因为它的父进程一直都是bash进程。这些子进程都可以读取环境变量所以环境变量可以被子进程继承下去。


http://www.ppmy.cn/news/1576773.html

相关文章

Docker安装Prometheus监控平台

介绍 Prometheus是一个开源的系统监控和警报工具包&#xff0c;最初由 SoundCloud 开发并开源&#xff0c;现已成为云原生计算基金会&#xff08;CNCF&#xff09;的毕业项目。它广泛应用于监控基础设施、应用程序和服务的性能&#xff0c;并提供强大的数据查询和警报功能。许多…

浅谈开发基于DeepSeek的编程辅助插件需要系统性的技术规划和实施方案

开发基于DeepSeek的编程辅助插件需要系统性的技术规划&#xff0c;以下是分阶段实施方案&#xff0c;包含具体代码示例和技术细节&#xff1a; 一、技术准备阶段 1. 环境配置 # 开发环境建议 Node.js >18.x (VSCode插件) / JDK17 (IntelliJ插件) Python 3.10 (模型交互层…

AMD RDNA3 GPU架构解析

如果你对AMD的RDNA3还不了解&#xff0c;在profile过程中的指标无法完全理解一些指标&#xff0c;比如说你听过着色器性能方面指标"occupancy"&#xff0c;听说它有助于隐藏内存 latency&#xff0c;但不理解其中的具体用法&#xff0c;那这篇文章将对你有一些帮助。…

【Java项目】基于Spring Boot的体质测试数据分析及可视化设计

【Java项目】基于Spring Boot的体质测试数据分析及可视化设计 技术简介&#xff1a;采用Java技术、Spring Boot框架、MySQL数据库等实现。 系统简介&#xff1a;体质测试数据分析及可视化设计是一个基于Web的在线平台&#xff0c;主要分为前台和后台两大功能模块。前台功能模…

【JMeter】JMeter之MQTT压测

文章目录 MQTT概念Jmeter压测MQTTMQTT服务器下载Jmeter MQTT插件测试MQTT测试思路和解决方法 MQTT概念 MQTT是什么 MQTT是用于物联网&#xff08;IoT&#xff09;的OASIS标准消息传递协议。它被设计为一种非常轻量级的发布/订阅消息传输&#xff0c;非常适合使用较少的代码占用…

浅谈开发环境

前言 工欲善其事&#xff0c;必先利其器。工作中经常用到的各种’东西’&#xff0c;如CMake、QMake、Make、MSBuildCLang、GCC、MinGW、MSVC等&#xff0c;有些在命名上有些类似&#xff0c;实际作用却不尽相同。 因此这里换个角度来了解下这些‘东西’的作用&#xff0c;以…

Jasypt 与 Spring Boot 集成文档

Jasypt 与 Spring Boot 集成文档 目录 简介版本说明快速开始 添加依赖配置加密密钥加密配置文件 高级配置 自定义加密算法多环境配置 最佳实践常见问题参考资料 简介 Jasypt 是一个简单易用的 Java 加密库&#xff0c;支持与 Spring Boot 无缝集成。通过 Jasypt&#xff0c;…

【PyQt5项目实战分享】基于YOLOv5的交通道路目标检测和数据分析软件

这是我之前用PyQt5做的一个基于YOLOv5的交通目标检测软件&#xff0c;包括物体检测和相关数据的分析功能&#xff0c;最近将其完善了下并打包&#xff0c;希望对大家有所帮助~ Tips&#xff1a;文末有我放到 github 和 gitee 的项目开源地址哦 文章目录 ⭐项目功能交通物体检测…