一直以来,以为shell脚本中经过export后的变量会影响到执行这个shell的终端中的环境变量。环境变量这个概念不是shell所独有的,而是linux里面进程所拥有的,shell解释器运行起来就是一个进程,这样它也就有了自己的环境变量。通常linux下main函数写法有:

 int main(void)
int main(int argc, char **argv)
int main(int argc, char **argv, char **envp)

  常见的为前2种写法,第三种最后的envp就是一个指向环境变量表的二级指针。在shell下执行一个程序,这个程序是由shell fork一个子进程来exec它的,即这个程序是执行它的shell的子进程。又知道linux子进程和父进程共享代码段,但是数据段,堆栈是独自拥有的,但是子进程在被创建时会继承父进程的数据段原来的内容,环境变量也包括在内,这样一来,由shell启动的这个程序的envp就和shell的环境变量内容一样了。如果这个时候执行另一个shell脚本,它里面export变量也就是相当于修改它自己的环境变量表,由于父子进程环境变量是独立的,所以当它执行完毕,执行它的这个shell也就是它的父进程的环境变量显然是不会受影响的。

shell中export理解误区的更多相关文章

  1. shell中的 “.”和source export

    在shell脚本里面export的环境变量,在set里面竟然看不到.为什么在shell脚本里面用export设置环境变量之后,当shell执行完了,用set命令看不到呢?但是你如果直接在终端里expo ...

  2. 理解 Linux shell 中的一个方言:2>&1

    理解 Linux shell 中的一个方言:2>&1  2016-11-14 杜亦舒 前言 在使用 linux 命令或者 shell 编程时,这个用法常会遇到 2>&1 如 ...

  3. Android中一个经典理解误区的剖析

    今天,在Q群中有网友(@广州-包晴天)发出了网上的一个相对经典的问题,问题具体见下图. 本来是无意写此文的,但群里多个网友热情不好推却,于是,撰此文予以分析. 从这个问题的陈述中,我们发现,提问者明显 ...

  4. shell中的环境变量:local,global,export

     1.local一般用于局部变量声明,多在在函数内部使用.实例如下:      echo_start() { local STR="$1" echo "...... ${ ...

  5. shell与export命令

    围绕以下几个问题来学习export命令: 1.什么是export命令? 2.为什么要用export命令? 3.怎么使用export命令? 1.什么是export命令? ♦ 用户登录到Linux系统后, ...

  6. centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课

    centos  shell脚本编程2 if 判断  case判断   shell脚本中的循环  for   while   shell中的函数  break  continue  test 命令   ...

  7. Shell中傻傻分不清楚的TOP3

    Shell中傻傻分不清楚的TOP3 发布文章 近来小姐姐又犯憨憨错误,问组内小伙伴export命令不会持久化环境变量吗?反正我是问出口了..然后小伙伴就甩给了我一个<The Linux Comm ...

  8. Linux从入门到进阶全集——【第十四集:Shell编程-export命令】

    参考: https://www.cnblogs.com/guojun-junguo/p/9855356.html 功能说明:设置或显示环境变量. 语 法:export [-fnp][变量名称]=[变量 ...

  9. shell中读写mysql数据库

    本文介绍了如何在shell中读写mysql数据库.主要介绍了如何在shell 中连接mysql数据库,如何在shell中创建数据库,创建表,插入csv文件,读取mysql数据库,导出mysql数据库为 ...

随机推荐

  1. asp.net WebService+Ajax调用

    default.aspx 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile=&qu ...

  2. WPF语音播放MediaPlayer

    private MediaPlayer player; public MainWindow() { InitializeComponent(); player = new MediaPlayer(); ...

  3. Sql Server 备份还原失败错误ERROR:3145(备份集中的数据库备份与现有的数据库不同)及解决办法

    SQL Server备份文件bak,备份后还原出现错误3145,备份集中的数据库备份与现有的 'xxx' 数据库不同. 解决办法如下: 1,新建一个与现有数据库重名的数据库. 如果您不知道数据库名称, ...

  4. [WCF编程]12.事务:事务概述

    一.事务概述 维护系统一致性和正确地处理错误恢复挑战的最佳方式是使用事务. 一个事务就是一个复杂操作的集合,这个集合中任何一个操作的失败都会引起整个集合的失败. 尽管在事务进行时系统被允许暂时出于不一 ...

  5. repeater三级嵌套绑定

    <asp:Repeater ID="rpt1" runat="server" onitemdatabound="rpt1_ItemDataBou ...

  6. 基于.net mvc 的供应链管理系统(YB-SCM)开发随笔1-开篇

    作为开篇之作,先把这个项目的介绍和一些技术点给各位. 1.项目所用到的技术 (1)前台展示:ASP.NET MVC 3.0+Jquery+Sea+Bootstrap等 (2)开发环境:VS2012/V ...

  7. input框中的value值到底是什么

    value 属性为 input 元素设定值. 对于不同的输入类型,value 属性的用法也不同: type="button", "reset", "s ...

  8. ubuntu下常用命令(一)

    1.查看目录 Ctrl+L 2.在终端下:复制命令:Ctrl + Shift + C 组合键.粘贴命令:Ctrl + Shift + V 组合键. 3.解压 tar xzf flie.tar.gz 4 ...

  9. 【来自媳妇的需求】PHP实现随机数和方程求解

    话说2015.11.06 ,北京下了第一场雪.16年的今天没下雪,但是雾霾还是不小的,帮媳妇整理她工作时,出现了下面的需求,便想到使用PHP来写程序来进行求解. [需求] 1. 给出一个平均值X,反过 ...

  10. Code First :使用Entity. Framework编程(7) ----转发 收藏

    第7章 高级概念 The Code First modeling functionality that you have seen so far should be enough to get you ...