如果在linux shell脚本中异步调用另一个脚本,cd会相互冲突吗?
sh test1.sh &
sh test2.sh &
其中,test1.sh的内容:
cd path1
do xxxx
test2.sh 的内容:
cd path2
do xxxx
假设两个子sh文件都是时间较长的io操作,而且依赖当前路径。这两个子shell是异步的,相互会影响吗?会不会第1个cd后造成第2个也在这个路径,第2个cd后又使第1个去了第2个的位置。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不会,因为你这两个脚本都是在子进程执行的。Shell的执行有隔离性,也就是不同进程(即使是父子进程)都是在各自的运行环境执行,互相隔离,互不影响。
如果期望在当前shell执行命令,而不是fork一个子进程执行,应该使用
source
命令。source
你可以理解为将脚本的内容拷贝到当前终端执行,所以是在当前shell环境下执行,而不是子进程执行。从你的执行命令来看,二者一般是不会冲突的,因为它们是完全两个独立的进程,而且有各自的环境。
当然,如果程序中有一些通过共用文件来进行数据交换的情况,则还是可能有数据冲突。这需要分析具体的脚本来判断啦,你现在给的信息判断不了。