关于脚本的执行路径问题

xiaoxiao2021-02-28  104

示例  

首先是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 的过程中 需要注意 是否后期需要获取 需要执行的 目录 。

转载请注明原文地址: https://www.6miu.com/read-66156.html

最新回复(0)