通常情况下,每个进程都有自己的“环境”,这个环境是由一组变量组成的,这些变量中存有进程可能需要引用的信息。在这种情况下,Shell与一个一般的进程没什么区别。
每次当一个Shell启动时,它都将创建适合于自己环境变量的Shell变量。更新或者添加一个新的环境变量的话,这个Shell都会立即更新它自己的环境,换言之,更改或增加的变量会立即生效,并且所有后继生成的Shell子进程都会继承这个环境。
如果一个脚本要设置一个环境变量,那么需要将这些变量‘export’出来,也就是需要通知到脚本本地的环境。这就是export命令的功能。
一个脚本只能够export变量到这个脚本所产生的子进程,也就是说只能对这个脚本所产生的命令和进程起作用。如果脚本是从命令行中调用的,那么这个脚本锁export的变量是不能影响命令行环境的。也就是说,子进程是不能export变量来影响产生自己的父进程的环境的。但是,当使用source命令执行脚本时,因为没有子进程的产生,此时脚本中的export命令将会影响父进程的环境。
每次当一个Shell启动时,它都将创建适合于自己环境变量的Shell变量。更新或者添加一个新的环境变量的话,这个Shell都会立即更新它自己的环境,换言之,更改或增加的变量会立即生效,并且所有后继生成的Shell子进程都会继承这个环境。
如果一个脚本要设置一个环境变量,那么需要将这些变量‘export’出来,也就是需要通知到脚本本地的环境。这就是export命令的功能。
一个脚本只能够export变量到这个脚本所产生的子进程,也就是说只能对这个脚本所产生的命令和进程起作用。如果脚本是从命令行中调用的,那么这个脚本锁export的变量是不能影响命令行环境的。也就是说,子进程是不能export变量来影响产生自己的父进程的环境的。但是,当使用source命令执行脚本时,因为没有子进程的产生,此时脚本中的export命令将会影响父进程的环境。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29067253/viewspace-2134609/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29067253/viewspace-2134609/