阅 读 文 章

利用SHELL脚本修改当前环境变量

[来源:网上转载 (http://www.chinaunix.net) | 作者:网友(lcz88990200) | 时间:2007-05-27 | 浏览:人次 ]


1.背景
---- 在日常的工作中,为了设置一大批环境变量,我们通常编辑了一个shell程序,包含了多个的变量设置,然后运行它。如何运行它呢?通常我们用$. cbpsprofile命令,确实改变了当前shell的环境变量;而直接运行该shell程序时,$cbpsprofile却不能改变当前shell的环境变量.这两种方式的差别何在?原理上有何差别?这是本文讨论的重点. 

---- 假设:我们编辑的shell程序是:cbpsprofile,其中包含了大量环境变量,如:INFORMIXDIR,INFORMIXSERVER,PATH,ONCONFIG的设置. 

2.原理分析 

---- 在UNIX系统中,我们在运行shell程序或系统命令的过程如下: 

---- 假设在当前的shell环境下,我们运行ps -f命令. 

---- 首先,当前的shell会调用:fork()命令,产生一个subprocess,该子进程完全复制了父进程的所有环境; 

---- 之后,当前的shell会调用:exec ps -f命令,在新的子进程的环境中,运行ps -f 命令.子进程的环境变量会根据新的应用进行调整,并使之运行,当应用完成之后,子进程结束,返回到父进程. 

---- 因此,通过上述过程分析,$cbpsprofile的运行的结果就可以预见,该shell程序的运行,环境变量重新赋值仅仅在子进程中,程序运行完后,返回到父进程,父进程的环境变量是不会受到影响的. 

3.点(.)的功能 

---- .在shell中的含义如下:在当前shell中,运行后续的shell程序,不再产生子进程的过程。相当于:将shell程序中的命令,逐条在当前shell中运行,类似于"输入重定向"。



 lucius_yu 回复于:2003-02-23 12:40:39

道理讲的是对的。。
不过,你可以用EXPORT使SHELL脚本中定义的变量能改变运行环境的变量。


 rzbl 回复于:2003-02-23 13:15:37

引用:原帖由 "lucius_yu" 发表:
道理讲的是对的。。
不过,你可以用EXPORT使SHELL脚本中定义的变量能改变运行环境的变量。

同意lucius_yu  的意见!!


 bjchenxu 回复于:2003-02-24 14:10:42

能不能讲讲
.
exec
action
的区别呢?


 hasjing 回复于:2003-03-07 12:37:42

用 . 和 export 都是对的!



论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 环境 变量 当前 修改 脚本 利用 shell 运行 进程 程序

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.