示例
首先是a.sh调用b.sh
# a.sh
/Users/zack/Desktop/B/b.sh
b.sh调用c.sh
# b.sh
C/c.sh
c.sh随便干点什么
# c.sh
echo "I'm c.sh."
a.sh 调用 b.sh 调用c.sh
下面是重点,记住了!!
source命令,不再产生新的shell,而是在当前shell下执行一切命令。
source FileName,作用:在当前bash环境下读取并执行FileName中的命令。
source在本shell中执行的,所以能够看到结果
调用绝对路径执行shell是在一个子shell里运行的,所以执行后,结果并没有反应到父shell里。
嗯明白了!source使用的脚本是在当前shell进程下进行的,所以$0
依旧是当前的b.sh。那么之前的pwd
应该是当前shell进程的工作目录,这个可以理解了。在a.sh调用b.sh,a.sh没有执行任何cd dir
操作,b.sh也没有,所以pwd
仍然是a.sh所在目录。
也即是说 在使用source 的过程中 需要注意 是否后期需要获取 需要执行的 目录 。