zoukankan      html  css  js  c++  java
  • 利用SHELL脚本修改当前环境变量

    转自http://www.chinaunix.net/old_jh/7/21485.html

    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中运行,类似于"输入重定向"。

  • 相关阅读:
    转贴WP7开发资源大收集
    Howto: 利用Web Camera模拟Windows Phone 7的重力加速度传感器
    File Transfer over Socket Between Windows Mobile Devices
    OpenGL ES Wrapper on Windows Mobile
    利用WiFi在Windows Mobile上建立Adhoc网络
    分享一个WebMap引擎(MapBar)
    iNove改进版(仿NeoEase的paled主题)
    ICDsoft主机半价优惠码推荐
    motorola XT615手机开箱照
    2011RTIC论坛回顾
  • 原文地址:https://www.cnblogs.com/fdd566/p/6692595.html
Copyright © 2011-2022 走看看