Linux环境变量与本地变量

文章目录

Linux环境变量与本地变量

什么是环境变量

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

查看环境变量

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

设置环境变量

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

本地变量

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

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

bash 复制代码
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里面是我们所有的环境变量。

命令行参数

c 复制代码
int main(char argc,char* argv[],char* )
{
	return 0;
}

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

c 复制代码
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

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

c 复制代码
./mytest
a
c
d

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

相关推荐
jimy11 天前
安卓里运行Linux
linux·运维·服务器
爱凤的小光1 天前
Linux清理磁盘技巧---个人笔记
linux·运维
耗同学一米八1 天前
2026年河北省职业院校技能大赛中职组“网络建设与运维”赛项答案解析 1.系统安装
linux·服务器·centos
知星小度S1 天前
系统核心解析:深入文件系统底层机制——Ext系列探秘:从磁盘结构到挂载链接的全链路解析
linux
2401_890443021 天前
Linux 基础IO
linux·c语言
智慧地球(AI·Earth)1 天前
在Linux上使用Claude Code 并使用本地VS Code SSH远程访问的完整指南
linux·ssh·ai编程
老王熬夜敲代码1 天前
解决IP不够用的问题
linux·网络·笔记
zly35001 天前
linux查看正在运行的nginx的当前工作目录(webroot)
linux·运维·nginx
QT 小鲜肉1 天前
【Linux命令大全】001.文件管理之file命令(实操篇)
linux·运维·前端·网络·chrome·笔记
问道飞鱼1 天前
【Linux知识】Linux 虚拟机磁盘扩缩容操作指南(按文件系统分类)
linux·运维·服务器·磁盘扩缩容