如果在linux shell脚本中异步调用另一个脚本,cd会相互冲突吗?

发布于 2022-09-12 23:21:43 字数 281 浏览 42 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

如梦 2022-09-19 23:21:43

不会,因为你这两个脚本都是在子进程执行的。Shell的执行有隔离性,也就是不同进程(即使是父子进程)都是在各自的运行环境执行,互相隔离,互不影响。

如果期望在当前shell执行命令,而不是fork一个子进程执行,应该使用source命令。source你可以理解为将脚本的内容拷贝到当前终端执行,所以是在当前shell环境下执行,而不是子进程执行。

葵雨 2022-09-19 23:21:43

从你的执行命令来看,二者一般是不会冲突的,因为它们是完全两个独立的进程,而且有各自的环境。
当然,如果程序中有一些通过共用文件来进行数据交换的情况,则还是可能有数据冲突。这需要分析具体的脚本来判断啦,你现在给的信息判断不了。

已参与了 SegmentFault 思否「问答」打卡,欢迎正在阅读的你也加入。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文