shell中export理解误区
一直以来,以为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理解误区的更多相关文章
- shell中的 “.”和source export
在shell脚本里面export的环境变量,在set里面竟然看不到.为什么在shell脚本里面用export设置环境变量之后,当shell执行完了,用set命令看不到呢?但是你如果直接在终端里expo ...
- 理解 Linux shell 中的一个方言:2>&1
理解 Linux shell 中的一个方言:2>&1 2016-11-14 杜亦舒 前言 在使用 linux 命令或者 shell 编程时,这个用法常会遇到 2>&1 如 ...
- Android中一个经典理解误区的剖析
今天,在Q群中有网友(@广州-包晴天)发出了网上的一个相对经典的问题,问题具体见下图. 本来是无意写此文的,但群里多个网友热情不好推却,于是,撰此文予以分析. 从这个问题的陈述中,我们发现,提问者明显 ...
- shell中的环境变量:local,global,export
1.local一般用于局部变量声明,多在在函数内部使用.实例如下: echo_start() { local STR="$1" echo "...... ${ ...
- shell与export命令
围绕以下几个问题来学习export命令: 1.什么是export命令? 2.为什么要用export命令? 3.怎么使用export命令? 1.什么是export命令? ♦ 用户登录到Linux系统后, ...
- centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课
centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 ...
- Shell中傻傻分不清楚的TOP3
Shell中傻傻分不清楚的TOP3 发布文章 近来小姐姐又犯憨憨错误,问组内小伙伴export命令不会持久化环境变量吗?反正我是问出口了..然后小伙伴就甩给了我一个<The Linux Comm ...
- Linux从入门到进阶全集——【第十四集:Shell编程-export命令】
参考: https://www.cnblogs.com/guojun-junguo/p/9855356.html 功能说明:设置或显示环境变量. 语 法:export [-fnp][变量名称]=[变量 ...
- shell中读写mysql数据库
本文介绍了如何在shell中读写mysql数据库.主要介绍了如何在shell 中连接mysql数据库,如何在shell中创建数据库,创建表,插入csv文件,读取mysql数据库,导出mysql数据库为 ...
随机推荐
- MVC学习系列11---验证系列之客户端验证
前面学习了,服务端验证,这篇文章中,我们接着学习客户端验证,客户端的验证,使用Jquery和Jquery插件来实现[jquery.validate.min.js and jquery.validate ...
- 关系数据库SQL之基本数据查询:子查询、分组查询、模糊查询
前言 上一篇关系数据库常用SQL语句语法大全主要是关系型数据库大体结构,本文细说一下关系型数据库查询的SQL语法. 语法回顾 SELECT [ALL|DISTINCT] <目标列表达式>[ ...
- C#开发微信门户及应用(44)--微信H5页面开发的经验总结
在我们开发微信页面的时候,需要大量用到了各种呈现的效果,一般可以使用Boostrap的效果来设计不同的页面,不过微信团队也提供很多这方面的资源,包括JSSDK的接口,以及Weui的页面样式和相关功能页 ...
- form表单提交数据
js代码: // form 跳转 gotourl//跳转的页面 options json格式参数 function FromGoTo(gotourl, options) { var inputhtml ...
- 让服务器iis支持.apk文件下载的设置方法
随着智能手机的普及,越来越多的人使用手机上网,很多网站也应手机上网的需要推出了网站客户端,.apk文件就是安卓(Android)的应用程序后缀名,默认情况下,使用IIS作为Web服务器的无法下载此文件 ...
- 在window下配置laravel开发环境
1.由于有一点php基础,所以非常想更进一步,就选择据说在国外最流行的php框架来学习了,laravel框架,官网上介绍是为艺术而生,从知乎和一些论坛上看到,laravel学起来并不简单,首先配置问题 ...
- spice server dpkg-buildpackage 打包编译备忘
一般我们会通过configure,make 编译.但是为了替换版本的方便需要把他编译成deb的包,而且还需要自定义下包名.下面就记录下我的修改过程. 注:前面关于spice server的编译过程掠过 ...
- java多线程-信号量
Semaphore(信号量)是一个线程同步结构,用于在线程间传递信号,以避免出现信号丢失,或者像锁一样用于保护一个关键区域.自从 5.0 开始,jdk 在 java.util.concurrent 包 ...
- js监听input是第几次click
我很多问题啊 真的是,然后我有问题就博问啊 ,博问的东西我还是放到博客里面来吧 因为我不怎么看博问 博客的话经常看, 恩 都是一开始我不懂 然后园友来解答的 真的很感谢这些园友 不多说 上代码吧 其实 ...
- iOS UITableView的使用 (选自oschina)
1.新手篇创建tableView http://my.oschina.net/joanfen/blog/203041 2.进阶篇列表中行的操作 http://my.oschina.net/jo ...