首页 > 系统相关 >Linux问题总结(1)

Linux问题总结(1)

时间:2023-12-10 23:31:47浏览次数:27  
标签:总结 传递 变量 declare 问题 export Linux 进程 环境变量

export 和 declare 底层实现原理

在 Bash 中,export 和 declare 都用于处理变量,但它们在底层的实现和使用上有一些区别。

export 命令: export 主要用于设置环境变量,使得变量在当前进程及其子进程中可见。其底层实现涉及到将变量添加到环境变量列表中。环境变量是一个由键值对组成的列表,用于传递信息给新创建的进程。当你使用 export 导出一个变量时,该变量会被添加到环境变量列表中,以便子进程能够访问它。

declare 命令: declare 命令用于声明变量,它具有多种选项,其中 -x 选项表示将变量导出为环境变量。declare -x 的底层实现与 export 的机制相似,都是将变量添加到环境变量列表。declare 还允许你设置变量的其他属性,如类型、只读属性等。

在实践中,export 更常用于直接将已存在的变量导出为环境变量,而 declare -x 更适用于在声明变量时同时导出为环境变量。

环境变量的传递: 在 Unix/Linux 系统中,环境变量是由父进程传递给子进程的一种机制。当一个进程被创建时,它会继承父进程的环境变量。通过 export 或 declare -x 导出的变量会被包含在环境变量中,因此它们可以在子进程中使用。

请注意,环境变量是一种文本形式的键值对,它们在进程之间传递。由于这种传递方式的限制,环境变量通常只能包含简单的字符串数据。

所谓的环境变量传递是利用存储实现的吗,在内存中存在数据交互区吗

环境变量的传递主要依赖于进程的内存结构和操作系统的机制,而并非直接存储在内存中的数据交互区。在 Unix/Linux 系统中,每个进程都有自己的内存空间,其中包含了程序代码、数据、堆、栈等不同的区域。

当一个新的进程被创建时,它会继承父进程的环境变量。这是通过父进程将环境变量信息传递给子进程的方式实现的。具体而言,父进程在调用 fork 创建子进程之前,会将环境变量信息传递给子进程。

在传递环境变量时,父进程的环境变量信息通常被复制到子进程的地址空间中,子进程会继承这些环境变量。这种传递方式使得子进程可以在启动时访问相同的环境变量。

在内存中,环境变量通常存储在一个以 null 结尾的字符串数组中。每个字符串都包含一个环境变量的键值对,形如 "KEY=VALUE"。这个字符串数组的末尾以一个空指针(null pointer)结尾。子进程通过访问这个字符串数组来获取父进程的环境变量信息。

总体来说,环境变量的传递是通过在进程的地址空间中传递信息的方式实现的,而非直接存储在内存的数据交互区。这种传递方式是 Unix/Linux 系统中进程通信的一部分,确保子进程能够访问父进程的环境变量。

标签:总结,传递,变量,declare,问题,export,Linux,进程,环境变量
From: https://blog.51cto.com/u_14882565/8763194

相关文章

  • 2023-2024-5 20232419《网络空间安全导论》第5章预习总结
    内容安全基础信息内容安全总结:信息安全有关内容的获取分析和网络上的,又分别有混合网络社区、跨媒体内容高性能提取,多媒体群体理解技术、多元网络媒体信息数据清洗,和内容中心网络命名攻击和缓存污染等。网络信息内容获取信息内容分析处理网络舆情内容监测预警总结:网络舆......
  • 2023-2024-1-20231319《计算机基础与程序设计》第十一周学习总结
    2023-2024-120231300《计算机基础与程序设计》第十一周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第十一周作业)这个作业的目标计算机科学概论第15,16章、《C语言程序设计》第10......
  • 2023-2024-1 20231326《计算机基础与程序设计》第十一周学习总结
    2023-2024-120231326《计算机基础与程序设计》第十一周学习总结目录2023-2024-120231326《计算机基础与程序设计》第十一周学习总结作业信息教材学习内容总结《计算机科学概论》第15章网络第16章万维网《C语言程序设计》教材学习中的问题和解决过程基于AI的学习代码调试中的......
  • spring 整合 mybatis 遇到问题
    写在前面:本文章用于记录博主平时遇到的问题,步骤略粗糙,目的在于记录一边后续博主自己查找,如果能帮助到其他人更好。文章中用到的链接均为自行引入,侵删,谢谢(2I2Rc*@JY8)1、报错:Exceptioninthread"main"java.lang.IllegalArgumentException:Invalidvaluetypeforattribute'f......
  • 2023-2024-1 学号20231324《计算机基础与程序设计》第十一周学习总结
    2023-2024-1学号20231324《计算机基础与程序设计》第十一周学习总结  作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第十一周作业这个作业的目标自学教材《计算机科学概论》第15,16章与《C......
  • 定向基函数法(RBF)文献总结
    目录定向基函数法(RBF)文献总结概述全局RBF法处理病态矩阵稀疏化策略RBF-PURBF-QIRBF-FDRBF-DQ形状参数的选择支点布局和Stencil的选择其他参考文献定向基函数法(RBF)文献总结概述大部分衍生品定价问题最终归结为求解PDE的数值解,最常见的数值方法莫过于FDM。假设定价问题对......
  • 学期(2023-2024-1) 学号(20232411)《网络空间安全导论》第五周学习总结
    学期(2023-2024-1)学号(20232411)《网络空间安全导论》第五周学习总结教材学习内容总结本周我学习了《网络空间安全导论》的第五章,其主要讲述了内容安全的概述,意义及其面对的主要威胁,以及信息内容的分析与处理方法,网络舆情系统的功能及应用。在学习过程中,我总结了如下要点,以思维导......
  • #2023-2024-1 20231408《计算机基础与程序设计》第十一周学习总结
    作业信息这个作业属于哪个课程<2023-2024-1-计算机基础与程序设计>这个作业要求在哪里<2023-2024-1计算机基础与程序设计第十一周作业>这个作业的目标<《计算机科学概论》第15,16章,《C语言程序设计》第10章,上周测试题>作业正文https://www.cnblogs.com/jfxyh06......
  • 2023-2024-1 20231418 《计算机基础与程序设计》第11周学习总结
    2023-2024-120231418《计算机基础与程序设计》第11周学习总结这个作业属于哪个课程2023-2024-1《计算机基础与程序设计》这个作业要求在哪里2023-2024-1计算机基础与程序设计第十一周作业这个作业的目标1.学习《计算机科学概论》第15,16章并完成云班课测试;2.学习《C......
  • stm32 cubeide调试问题汇总
    stm32cubeide调试问题汇总1.STM32CubeIDE无法进行调试报以下错误Targetisnotresponding,retrying...Targetisnotresponding,retrying...Targetisnotresponding,retrying...Targetisnotresponding,retrying...Targetisnotresponding,retrying.........