第三部分:3---环境变量

news2024/11/25 18:47:45

目录

什么是环境变量?

PATH环境变量:

临时修改环境变量PATH:

HOME环境变量:

可能使用环境变量的场景:

进程和环境变量的关系:

环境变量相关操作:

代码获取环境变量:

主函数传参获取环境变量:

通过C语言指针获取环境变量:

本地变量和环境变量的区别:

Linux命令分类:

取消环境变量:

查看环境变量:


什么是环境变量?

  • 环境变量是一个全局变量,系统中存在大量的环境变量,存在新式是以键值对的方式存在。

  • 每一个环境变量都有特殊功能,用于完成特定的系统功能。

  • 环境变量可以被系统中运行的任何进程访问。

  • 环境变量可以存储:目录路径、文件路径、系统信息、临时标志或状态等等。

PATH环境变量:

  • 执行一个命令,需要先找到他的可执行程序在哪,也就是要找到可执行程序的目录。

  • 系统命令可以直接调用,不指明目录,是因为他的目录存储在PATH中。

echo $PATH //打印PATH路径

  • PATH的本质就是一个由目录组成的字符串列表,各目录之间使用冒号分隔(Linux)。当输入一个命令时,操作系统会按照PATH变量中定义的目录顺序依次搜索对应路径,查询命令对应的可执行程序。找到就执行,找不到就报错。

临时修改环境变量PATH:

  • 这种修改适用于其他所有环境变量,且只会持续到当前终端会话结束。

  • 这种修改是对内存中当前会话的环境变量进行修改,并不会影响系统配置文件或其他会话中的 PATH 变量。

PATH=$PATH:new path
//将一个目录添加到环境变量
//$PATH表示之前的目录字符串列表,如果不加$PATH就会直接使用new path覆盖原来的PATH

  • 如果想要删除PATH中的某个目录,可以直接将去掉该目录的PATH覆盖原PATH。

HOME环境变量:

  • HOME环境变量存储当前用户主目录的路径。

  • 用户登陆时,从/etc/passwd 文件读取用户的主目录路径,赋值给HOME环境变量。

  • 用户登陆成功后,调用 "cd $HOME" 命令进入用户的主目录路径。

echo $HOME //查看HOME环境变量

可能使用环境变量的场景:

  • 身份认证,限定部分用户可以使用程序的部分功能。

  • 首先getenv获取USER环境变量的值,得到操作系统的当前用户的用户名。

  • 然后和可使用功能的用户列表做对比,当前用户在列表中,就可以使用功能,否则不行。

进程和环境变量的关系:

  • 命令行启动的进程,他们的父进程都是bash / shell。这些进程的环境变量是由bash / shell传递过来的。

  • 父进程的环境变量是从用户主目录中的.bash_profile文件中读取到的。当用户登录后,系统会自动从.bash_profile文件读取配置信息,将值填充到bash的环境变量表中。

环境变量相关操作:

echo $环境变量 //显示环境变量的变量值。
export 环境变量 //添加一个自己的环境变量到bash,使用env可以查看。并没有直接写入到配置文件,而是在bash的上下文中存储。如果想要写到配置文件,使用vim打开.bash_profile文件,将这句话添加到配置文件即可。
env //显示所有的环境变量。
unset //清楚环境变量。
set //显示本地定义的shell变量和环境变量。

代码获取环境变量:

char* getenv(const char* name); //通过环境变量名称获取环境变量,使用要包含头文件<stdlib.h>。
printf("PATH: %s",getenv("PATH"));//获取PATH环境变量

主函数传参获取环境变量:

int main(int argc,char* argv[])
{
    for(int i=0;argv[i];i++)
    {
        printf("%d : %s",i,argv[i]);
    }
}

通过C语言指针获取环境变量:

  • 通过C语言自动设置好的全局变量,可以在main函数不接受参数的情况下访问环境变量表( char* argv[] )。

extern char** environ; //指向argv[]的指针。
for(int i=0;environ[i];i++) //环境变量表的最后一个元素为nullptr
{
    printf("environ[%d] : %s",i,environ[i]);
}

本地变量和环境变量的区别:

  • 将本地变量使用export声明后,本地变量提升为环境变量。

MY_BIANLIANG=100 //直接在命令行声明,属于本地变量。等于号两边不要带空格。
export MY_BIANLIANG //使用export声明后,提升为环境变量
  • 本地变量只会在bash进程有效,不会被子进程继承。

  • 环境变量可以被所有子进程继承,来实现他的“ 全局性 ”。

Linux命令分类:

  • 内建命令:由Shell程序(如Bash、Zsh等)直接提供和解释执行;不需要启动新的进程,执行速度通常更快。常见的内建命令有 cd、echo、alias、export、set、history 等。

  • 外部命令:独立的可执行程序,当执行外部命令时,Shell会启动一个新的子进程来运行这个命令。常见的外部命令有 ls、grep、find、cp、mv、awk、sed 等。

取消环境变量:

unset MY_BIANLIANG

查看环境变量:

env //查看环境变量
set //查看包含环境变量的所有变量(包括本地变量)

 

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

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

相关文章

百度静态资源瓦片nginx直接显示完整案例

案例地址&#xff1a;https://download.csdn.net/download/jinhuding/89733763 访问显示效果&#xff1a;(根据瓦片地址直接显示) http://172.16.39.203:8099/tiles/

(rs系列)rs4之补环境

网站&#xff1a;aHR0cDovL3d3dy5mYW5nZGkuY29tLmNuLw 先讲讲rs4特征​&#xff1a; 1、打开控制台立刻进入无限debugger&#xff0c;混淆代码格式_$xx 会有两次无限debugger&#xff0c;直接在对应位置鼠标右键》Never pause here即可​。当然这种方法比较耗资源&#xff0c;也…

代码随想录算法训练营第42天|188. 买卖股票的最佳时机 IV、714. 买卖股票的最佳时机含手续费

目录 188. 买卖股票的最佳时机 IV&#xff08;交易最多k次&#xff09;1、题目描述2、思路3、code4、复杂度分析 714. 买卖股票的最佳时机含手续费1、题目描述2、思路3、code4、复杂度分析 309. 买卖股票的最佳时机含冷冻期1、题目描述2、思路3、code4、复杂度分析 买卖股票习题…

智能语音交互:人工智能如何改变我们的沟通方式?

在科技飞速发展的今天&#xff0c;人工智能&#xff08;AI&#xff09;已经渗透到我们生活的方方面面。其中&#xff0c;智能语音交互作为AI技术的一个重要分支&#xff0c;正以前所未有的速度改变着我们的沟通方式。从智能家居的控制到办公自动化的应用&#xff0c;再到日常交…

CentOs7 解决yum更新源报错:[Errno 14] HTTP Error 404 - Not Found 正在尝试其它镜像。

CentOs7 解决yum更新源报错&#xff1a;[Errno 14] HTTP Error 404 - Not Found 正在尝试其它镜像。 前言问题解决方法&#xff1a; 前言 遇到这个问题大概率是镜像源的问题可以参照这篇文章的内容试一下 镜像源问题相关解决方法 根据自己的情况对症下药&#xff0c;如果还不…

WPS如何删除表格下的空白页

WPS Office&#xff08;12.1.0.17827&#xff09; ① 鼠标右键&#xff0c;选择段落 ② 行距&#xff1a;固定值&#xff1b;设置值&#xff1a;1磅&#xff1b;取消勾选&#xff0c;确定即可~

【区块链 + 人才服务】CERX- 基于联盟链的研学资源交换网络 | FISCO BCOS应用案例

CERX 是定位于面向高校科学研究与教学的分布式研学资产交换网络&#xff0c;构建一个用于数据、算法模型、论文和课程的研学资源价值流转平台。该平台采用 FISCO BCOS 联盟链为核心区块链层。 CERX 基于“交叉学科”的人才培养生态&#xff0c;围绕“科研、课件、课程、证书”…

【C++从练气到飞升】23--内联函数、auto、范围for、nullptr

&#x1f388;个人主页&#xff1a;库库的里昂 ✨收录专栏&#xff1a;C从练气到飞升 &#x1f389;鸟欲高飞先振翅&#xff0c;人求上进先读书&#x1f389; 目录 ⛳️推荐 一、内联函数 1.1 定义 1.2 特性 二、auto关键字 2.1 简介 2.2 auto使用细则 2.3 不能使用aut…

ES6标准---【二】【学习ES6看这一篇就够了!!】

目录 ES6以往文章 ES6新增字符串方法&#xff1a; includes()、startsWith()、endsWith() repeat() padStart()、padEnd() 常见用途 为数值补全指定位数 提示字符串格式 trimStart()、trimEnd() String.raw() ES6以往文章 ES6标准-【一】【学习ES6看这一篇就够了&a…

开关电源综合测试平台自动生成报告,智能分析电源测试参数

在电源模块的检测过程中&#xff0c;数据的准确性和分析效率至关重要&#xff0c;开关电源综合测试平台的数据报告和数据分析功能为企业的电源测试带来了便利。 NSAT-8000开关电源综合测试平台是集自动化测试与数据收集分析于一体的综合测试软件&#xff0c;打破了传统测试系统…

【组件】WEB前端-富文本编辑器组件推荐 在线编辑器 Word

【组件】WEB前端-富文本编辑器组件推荐 在线编辑器 Word canvas-editor 基于canvas/svg的富文本编辑器 canvas-editor | rich text editor by canvas/svgrich text editor by canvas/svghttps://hufe.club/canvas-editor-docs/ canvas-editor 基于canvas/svg的富文本编辑器 开…

文案改写工具有哪些?5款智能改写工具迅速提升文案品质

在信息爆炸的时代&#xff0c;优秀的文案如同黄金&#xff0c;能瞬间抓住消费者的眼球。然而&#xff0c;创作出独具匠心的文案并非易事&#xff0c;尤其是当需要不断改写以保持文案内容新鲜感时。那么&#xff0c;文案改写工具有哪些是能帮助我们事半功倍呢&#xff1f;以下5款…

Goby 漏洞发布|(CVE-2024-45195)Apache OFBiz /viewdatafile 代码执行漏洞【已复现】

漏洞名称&#xff1a;Apache OFBiz /viewdatafile 代码执行漏洞&#xff08;CVE-2024-45195&#xff09; English Name&#xff1a;Apache OFBiz /viewdatafile Code Execution Vulnerability(CVE-2024-45195) CVSS core: 8.0 漏洞描述&#xff1a; Apache OFBiz是一个开源…

--数据库--

制作工人薪资管理系统 #include <myhead.h> #include <sqlite3.h> typedef struct {int gh;char name[20];double salary; }Worker;int do_insert(sqlite3 *ppdb) {Worker work;printf("请输入插入的工号&#xff1a;");scanf("%d",&work.…

基于Verilog HDL的FPGA设计基础

第一章 Verilog数字集成电路设计方法概述 HDL(Hardware Description Language)----硬件描述语言 EDA(Electronic Design Automation)----电子设计自动化 VLSI(Very Large Scale Integrated)----超大规模集成电路 ASIC(Application Specific Integrated Circuit)----专用集成电路…

坚守官网,深挖没有错;积极转型也没错,就怕10年前经验用在现在

如今官网建设领域哀嚎一片&#xff0c;出现三种应对策略。 其一&#xff1a;坚守官网&#xff0c;深挖下去&#xff0c;做出高大上&#xff0c;精美炫酷和实效网站&#xff0c;路子很对。 其二&#xff1a;积极寻求转型&#xff0c;客户需要啥就做啥&#xff0c;比如搞小程序…

Vue3可编辑表格插件

插件亮点&#xff1a; 通过可自定义单元格内容。可控的状态控制&#xff0c;例如只读、禁止编辑行等配置。可控的状态交互&#xff0c;例如框选单元格、框选行等配置。可控的推拽顺序&#xff0c;例如拖拽行、推拽列。方便的单元格数据验证配置。方便的快捷右键菜单&#xff0c…

std::map 合并

目录 示例 效果 采用insert函数实现两个map的合并。使用方法&#xff1a; map1.insert(map2) 假如map2的某些键也出现在map1里面&#xff0c;则map1中重复的键值对不变&#xff0c;map2中重复的键值对无法覆盖map1。 示例 #include <map> #include <iostream>…

USB转百兆网卡芯片CH397在多平台下使用说明

简介 CH397是一款USB2.0高速转以太网芯片&#xff0c;支持10M/100M网络的以太网MACPHY&#xff0c;内置青稞RISC-V 处理器、符合IEEE802.3 和IEEE802.3az-2010 协议规范。支持Windows/ Linux /macOS /iOS /Android 等多平台各系统&#xff0c;适配各类台式电脑、笔记本电脑、平…

【Nacos】报错之服务实例类型不允许改变

在使用Nacos配置服务的实例类型的时候&#xff0c;对服务的实例类型进行修改。 之前的非临时实例&#xff0c;修改为临时实例后&#xff0c;报错&#xff1a; com.alibaba.nacos.api.exception.NacosException: errCode: 400, errMsg: Current service DEFAULT_GROUPproduct-…