[精华] 利用SHELL脚本修改当前环境变量
来源:互联网 发布:芭乐 网络电影 编辑:程序博客网 时间:2024/05/15 01:11
/********************************************************************************************************************************
原文地址:http://www.chinaunix.net/old_jh/7/21485.html
转载说明:学习的 'source' "." "export"
********************************************************************************************************************************/
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 都是对的!
原文链接:http://bbs.chinaunix.net/viewthread.php?tid=21485
转载请注明作者名及原文出处
- [精华] 利用SHELL脚本修改当前环境变量
- window 利用皮处理脚本修改环境变量
- shell脚本精华集锦
- 利用shell脚本来批量修改文件名
- 修改shell的环境变量
- 修改环境变量 批处理脚本
- shell脚本的执行环境变量
- shell脚本设置登陆环境变量
- solaris设置环境变量shell脚本
- shell脚本编程<先导>:环境变量
- Shell脚本修改crontab
- 利用bat脚本设置环境变量
- shell sed 文件修改 环境变量
- shell脚本获取当前脚本所在位置
- 关于linux Shell crontab 执行当前环境变量
- 利用shell脚本定时完成任务
- crontab启动shell脚本的环境变量问题
- crontab启动shell脚本的环境变量问题
- Java枚举的七种常见用法
- app in appStore url
- 自己常用的资源信息记录
- 《Android核心技术与实例详解》笔记第一篇
- 原子计数【转】
- [精华] 利用SHELL脚本修改当前环境变量
- MFC简单mp3播放器播放功能实现
- IC卡学习笔记(六)
- 内存映射文件进程间共享内存
- hibernate二级缓存配置学习记录
- 使用DOS下的FC命令比较两个文件的异同
- Android display架构分析一-高通7系列硬件架构分析
- lua继承
- ubuntu-12.0.4安装bugzilla