牢记下面几个结论html
一、执行脚本(即执行一个脚本文件,打开一个shell窗口,在脚本中调用脚本等等)时是在一个子shell环境运行的,脚本执行完后该子shell自动退出。shell
二、当打开一个子shell时,父shell中的系统环境变量会被复制到子shell中(用export定义的变量才是系统环境变量);bash
三、一个shell中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消失(并不能返回到父shell中)。htm
四、不用export定义的变量只对该shell有效,对子shell也是无效的。blog
五、直接执行一个脚本文件是在一个子shell中运行的,而在脚本前加source,则是在当前shell环境中直接运行(不是子shell)。作用域
有关shell的环境变量做用域问题,用上面这5点去套,绝对正确。get
能够用这个来理解咱们的export,.bashrc一系列的概念了。变量
参考文章:shell 与 export命令脚本