相关疑难解决方法(0)

在 Bash 中调用 subshel​​l 的规则?

我似乎误解了创建子 shell 的 Bash 规则。我认为括号总是会创建一个子shell,它作为自己的进程运行。

然而,情况似乎并非如此。在代码片段 A(如下)中,第二个sleep命令不在单独的 shell 中运行(由pstree在另一个终端中确定)。但是,在代码片段 B 中,第二个sleep命令确实在单独的 shell运行。片段之间的唯一区别是第二个片段在括号内有两个命令。

有人可以解释一下何时创建子shell的规则吗?

代码片段 A:

sleep 5
(
sleep 5
)
Run Code Online (Sandbox Code Playgroud)

代码片段 B:

sleep 5
(
x=1
sleep 5
)
Run Code Online (Sandbox Code Playgroud)

shell bash shell-script subshell

30
推荐指数
2
解决办法
1万
查看次数

标签 统计

bash ×1

shell ×1

shell-script ×1

subshell ×1