Linux环境变量与本地变量

news/2024/12/3 7:57:48/

文章目录

  • Linux环境变量与本地变量
    • 什么是环境变量
    • 查看环境变量
    • 设置环境变量
    • 本地变量
      • 命令行参数

Linux环境变量与本地变量

什么是环境变量

操作系统或运行时环境中存储的一些变量,用来存储与进程或系统相关的配置信息。这些变量在进程启动时由操作系统或Shell读取,并对进程的行为和资源访问产生影响。

查看环境变量

env  //可以查看所有的环境变量,环境变量具有全局属性,也就是你这个程序中的所有子进程的环境变量都是继承父进程的
echo $具体变量名称    //查看具体的某个环境变量
系统调用接口
char* getenv(const char* name);

设置环境变量

export MY_Value = 1111 //设置MY_value为环境变量,并且值为111
unset MY_value  //取消环境变量

本地变量

直接在shell中定义的变量就是本地变量

例如:直接在bash中写入以下的内容,A 和 B就是本地变量。

A = 1
B = 2c

**问题1:**可知bash是一个进程,我们在bash中所输入的指令都通过bash去创建子进程去执行,当我们用echo去输出本地变量的值的时候,为什么可以输出出来,按理来说本地变量不是不能继承给子进程吗?

答1:命令行上创建的进程不都是通过创建子进程去运行的。这里分为两种,一部分命令是去创建子进程中创建,另一部分的指令是通过bash自己去完成,类似于bash调用了自己的,或者系统写的函数,也被叫做内建命令。如cdechopwd

注意:不管是环境变量还是本地变量,都只是在当前bash中生效,一旦bash销毁,这些变量也会销毁。

问题2: 为什么说环境变量有全局属性,子进程是如何继承的?

答2: 这里涉及到命令行参数传参,main函数的第三个参数int main(char argc,char* argv[],char* env[])

env里面是我们所有的环境变量。

命令行参数

int main(char argc,char* argv[],char* )
{return 0;
}

argv是一个指针数组,里面的元素保存的是命令的输入内容,以空格为分隔。argc是argv中的元素个数。

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

假设这个程序名字为mytest

我们在命令行输入 ./mytest a b c d

这个程序将会打印如下的内容:

./mytest
a
c
d

这也就是我们所输入的内容,这就是命令行参数,注意argv[]数组最有一个指针指向的位置为NULL,也就是0


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

相关文章

go语言读取yaml配置文件内容

1、config.yaml配置文件内容假设如下 name: "example" version: 1.0 settings:timeout: 30debug: truefeatures:- feature1- feature22、定义结构体 go语言定义结构体匹配yaml内容 package mainimport ("fmt""log""os""gopkg.…

解决vscode中的不能安装VS code 服务(XHR Failed)【已解决】

碰到这种情况一般是要在本地下载某些文件,然后上传到远程服务器。但因为本地代理有问题,导致下载失败。 解决方法: 本地client的代理设置为全局代理,即Global模式,然后重新连接远程服务器,即可正常下载解…

数据查找文件夹里Excel、Word文件

我经常需要处理大量的Excel文件,为了解决查找数据时的困扰,我编写了一个小工具。这个工具可以搜索文件夹下的所有Excel文件,只需输入你想查找的字符串,它就会告诉你该字符串出现在哪个Excel文件的哪个表格中。 下载地址&#xff…

线程的互斥与同步

线程的加载 在内存当中我们知道还有一个关于共享区的概念,在这上面他有对库映射的虚拟地址,也有对创建的线程pthread做的管理。 我们所用的pthread_create()函数呢,其实也就是就是返回在共享区里创建的线程地址。而线程地址指向的首地址其实…

学习笔记047——Spring 框架核心源码笔记

文章目录 1、Spring 框架核心源码2、IoC 核心思想3、Spring IoC 的使用4、IoC 基于注解的执行原理 1、Spring 框架核心源码 1、使用 Spring 框架 2、反射机制 IoC 控制反转 Inverse of Control 创建对象的权限,Java 程序中需要用到的对象不再由程序员自己创建&am…

计算机网络--网络安全测试

问题 1 以下关于网络安全威胁发展的趋势的描述中错误的是___A_____。 答案: A云计算可以有效地防止网络攻击发生 B网络攻击、病毒与垃圾邮件是网络安全的三大公害 C网络攻击开始演变成某些国家或利益集团重要的政治、军事工具 D趋利性是当前网络攻击的主要特点 …

二分法篇——于上下边界的扭转压缩间,窥见正解辉映之光(2)

前言 上篇介绍了二分法的相关原理并结合具体题目进行讲解运用,本篇将加大难度,进一步强化对二分法的掌握。 一. 寻找峰值 1.1 题目链接:https://leetcode.cn/problems/find-peak-element/description/ 1.2 题目分析: 题目要求返回数组内…

关于BeanUtils.copyProperties是否能正常复制字段【详细版】

话不多说!先总结: 1、字段相同,类型不同(不复制,也不报错) 2、子类父类 (1)子类传给父类(可以正常复制) (2)父类传给子类(可以正常复制) 3、子类父类&#x…