Ich scheine die Bash-Regel zum Erstellen einer Subshell falsch zu verstehen. Ich dachte, Klammern erzeugen immer eine Subshell, die als eigener Prozess abläuft.
Dies scheint jedoch nicht der Fall zu sein. In Code-Snippet A (siehe unten) wird der zweite sleepBefehl nicht in einer separaten Shell ausgeführt (wie von pstreeeinem anderen Terminal festgelegt). In Code-Snippet B wird der zweite sleepBefehl jedoch in einer separaten Shell ausgeführt. Der einzige Unterschied zwischen den Snippets besteht darin, dass das zweite Snippet zwei Befehle in Klammern enthält.
Könnte jemand bitte die Regel erklären, wann Subshells erstellt werden?
CODE SNIPPET A:
sleep 5
(
sleep 5
)
CODE SNIPPET B:
sleep 5
(
x=1
sleep 5
)
forkund der untergeordnete Prozess wird durch Aufrufen erstellt (um externe Befehle auszuführen)fork + exec. Aber Ihr erster Absatz legt nahe, dass dies auchfork + execals Subshell bezeichnet wird. Was mache ich hier falsch?