Linux : 环境变量

news2025/3/5 6:07:32

目录

一 环境变量

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.coloradmin.cn/o/2309849.html

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

相关文章

SQL-labs13-16闯关记录

http://127.0.0.1/sqli-labs/less-13/ 基于POST单引号双注入变形 1&#xff0c;依然是一个登录框&#xff0c;POST型SQL注入 2&#xff0c;挂上burpsuite&#xff0c;然后抓取请求&#xff0c;构造请求判断漏洞类型和闭合条件 admin 发生了报错&#xff0c;根据提示闭合方式是(…

2025-03-04 学习记录--C/C++-PTA 习题5-4 使用函数求素数和

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 二、代码&#xff08;C语言&#xff09;⭐️ #include <stdio.h>// 函数声明&#xff1a;判断一个数是…

Virtuose 6D TAO HF力反馈系统:加强力遥操作主手

Virtuose 6D TAO是一款搭载六主动自由度的力反馈设备&#xff0c;该产品自带被动式夹持器&#xff0c;工作空间大&#xff0c;可与EtherCAT接口通信&#xff0c;是轻松控制从机械臂的首选产品&#xff0c;特别适合工业遥操作、核工业遥操作等应用。 产品特点 ▪ 六主动自由度、…

使用AI后为什么思考会变得困难?

使用AI后为什么思考会变得困难&#xff1f; 我总结了四篇近期的研究论文&#xff0c;来展示AI是如何以及为什么侵蚀我们的批判性思维能力。 作者使用AI制作的图像 前言&#xff1a;作者在这篇文章中&#xff0c;借AI技术的崛起&#xff0c;揭示了一场悄然发生的思想博弈。表面…

【Resis实战分析】Redis问题导致页面timeout知识点分析

事故现象&#xff1a;前端页面返回timeout 事故回溯总结一句话&#xff1a; &#xff08;1&#xff09;因为大KEY调用量&#xff0c;随着白天自然流量趋势增长而增长&#xff0c;最终在业务高峰最高点期占满带宽使用100%。 &#xfeff; &#xfeff; &#xff08;2&#x…

FlashMLA(DeepSeek开源周,第一个框架):含源码分析

1. 概述 FlashMLA 是由 DeepSeek 原创开发的一种深度学习框架&#xff0c;专门用于加速多头注意力机制&#xff08;MLA&#xff09;架构的推理过程。它通过优化内存管理和计算效率&#xff0c;显著提升了模型在高性能 GPU 上的推理速度。FlashMLA 主要适用于 DeepSeek 的架构模…

点大商城V2-2.6.6.1全能版源码+最新排队免单插件功能

一.介绍 点大商城V2独立开源版本&#xff0c;版本更新至2.6.6&#xff0c;系统支持多端&#xff0c;前端为UNiapp&#xff0c;多端编译。 二.安装环境&#xff1a; Nginx 1.22PHP7.3MySQL 5.7 推荐PHP 7.3&#xff08;不得大于此版本&#xff0c;否则容易出bug&#xff09; …

行为模式---命令模式

概念 命令模式是一种行为设计模式&#xff0c;它的核心思想就是将请求封装为一个对象&#xff0c;此对象包含与请求相关的所有信息。可以用不同的请求对客户进行参数化。命令模式通过将请求的发送者和接收者解耦&#xff0c;支持请求的排队、记录、撤销等操作。 使用场景 1、…

Graph RAG 迎来记忆革命:“海马体”机制让问答更精准!

随着生成式 AI 技术的快速发展,RAG(Retrieval-Augmented Generation)和 Agent 成为企业应用大模型的最直接途径。然而,传统的 RAG 系统在准确性和动态学习能力上存在明显不足,尤其是在处理复杂上下文和关联性任务时表现不佳。近期,一篇论文提出了 HippoRAG 2,这一新型 R…

Linux——基本指令

我们今天学习Linux最基础的指令 ls 指令 语法&#xff1a; ls [选项] [⽬录或⽂件] 功能&#xff1a;对于⽬录&#xff0c;该命令列出该⽬录下的所有⼦⽬录与⽂件。对于⽂件&#xff0c;将列出⽂件名以及其他信 息。 命令中的选项&#xff0c;一次可以传递多个 &#xff0c…

【C++】模板编程入门指南:零基础掌握泛型编程核心(初阶)

文章目录 一、泛型编程二、函数模板1. 函数模板的概念和格式2. 函数模板的原理3. 函数模板的实例化隐式实例化显式实例化 三、类模板 一、泛型编程 泛型编程就是编写与类型无关的通用代码&#xff0c;是代码复用的一种手段&#xff0c;模板是泛型编程的基础&#xff0c;可能不太…

网上打印平台哪个好用?网上打印资料推荐

网上打印平台哪个好用 随着数字化办公的普及&#xff0c;网上打印平台因其便捷性和经济性而受到越来越多人的青睐。无论是学生、上班族还是个人用户&#xff0c;在需要快速打印资料时&#xff0c;一个好用的在线打印服务可以大大节省时间和成本。 那么&#xff0c;如何选择一…

Mac远程桌面软件哪个好用?

远程桌面软件能帮助我们快速的远程控制另一台电脑&#xff0c;从而提供远程帮助&#xff0c;或者进行远程办公。那么&#xff0c;对macOS系统有什么好用的Mac远程桌面软件呢&#xff1f; 远程看看是一款操作简单、界面简洁的远程桌面软件&#xff0c;支持跨平台操作&#xff0…

C#—Settings配置详解

C#—Settings配置详解 在C#项目中&#xff0c;全局配置通常指的是应用程序的设置&#xff08;settings&#xff09;&#xff0c;这些设置可以跨多个类或组件使用&#xff0c;并且通常用于存储应用程序的配置信息&#xff0c;如数据库连接字符串、用户偏好设置等。 Settings配置…

PyCharm中通过命令行执行`pip`命令下载到哪里了:虚拟环境目录下

PyCharm中通过命令行执行pip命令下载到哪里了:虚拟环境目录下 在PyCharm中通过命令行执行pip命令安装工具包,包的下载位置取决于多种因素 虚拟环境 如果项目使用了虚拟环境(通常是推荐的做法): Windows:虚拟环境通常位于项目目录下的.venv文件夹(默认情况)或你指定…

Golang的性能分析指标解读

Golang的性能分析指标解读 一、概述 语言&#xff09;是一种由Google开发的开源编程语言&#xff0c;以其并发性能和高效的编译速度而闻名。对于程序员来说&#xff0c;了解如何对Golang应用程序进行性能分析是非常重要的&#xff0c;因为这能帮助他们发现潜在的性能瓶颈并对其…

QT 作业 day4

作业 代码 Widget.h class Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();private slots:// 槽函数void on_listWidget_itemDoubleClicked(QListWidgetItem *item);private:Ui::Widget *ui; }; #endif Widget.cpp Widget::Widget(QW…

Docker安装Redpandata-console控制台

介绍 Redpanda控制台&#xff0c;这是一个功能强大的Web UI&#xff0c;用于管理和监控您的Redpanda 集群。探索实际示例和场景&#xff0c;以帮助您了解如何利用 Redpanda 控制台实现不同的用例&#xff0c;包括数据可观察性、Redpanda 管理、访问控制和连接。 可对Redpanda…

【分享】网间数据摆渡系统,如何打破传输瓶颈,实现安全流转?

在数字化浪潮中&#xff0c;企业对数据安全愈发重视&#xff0c;网络隔离成为保护核心数据的重要手段。内外网隔离、办公网与研发网隔离等措施&#xff0c;虽为数据筑牢了防线&#xff0c;却也给数据传输带来了诸多难题。传统的数据传输方式在安全性、效率、管理等方面暴露出明…

Docker创建自定义网桥并指定网段

前言 docker0是Docker默认网络的核心组件, 通过虚拟网桥和NAT技术, 实现了容器间的通信以及容器与外部网络的交互。然而, docker0网段是固定的(通常是172.17.0.0/16), 为了更灵活地管理容器网络&#xff0c;Docker支持创建自定义网桥&#xff0c;允许用户指定网段。 例如, 在…