source filename [arguments] 与 普通的bash脚本有什么区别?

source filename [arguments] 与 普通的bash脚本有什么区别?

source filename [arguments] 与 普通的bash脚本有什么区别?      
source foo.sh 会把 foo.sh 的内容读出来之后在当前 shell 里面运行, 这跟你把 foo.sh 的内容直接输入到命令行基本上没有区别; ./foo.sh 是在当前 shell 的子 shell (sub shell) 中运行, 因此 ./foo.sh 的运行不会影响当前 shell 的一些环境变量等设置      
明白了!感谢!