Bir subshell oluşturmak için Bash kuralını yanlış anlamış gibiyim. Parantezlerin daima kendi süreci olarak çalışan bir alt kabuk yarattığını düşündüm.
Ancak, durum böyle görünmüyor. Kod Parçacığı A'da (aşağıda), ikinci sleep
komut ( pstree
başka bir terminalde belirlendiği gibi) ayrı bir kabukta çalışmaz . Ancak, Kod Parçacığı B'de, ikinci sleep
komut mu ayrı kabukta çalıştırın. Parçacıklar arasındaki tek fark, ikinci pasajın parantez içinde iki komut içermesidir.
Biri lütfen alt kabukların ne zaman oluşturulduğunun kuralını açıklayabilir mi?
KOD SNIPPET A:
sleep 5
(
sleep 5
)
KOD SNIPPET B:
sleep 5
(
x=1
sleep 5
)
fork
ve alt süreç çağrılarak (harici komutları çalıştırmak için) yaratılırfork + exec
. Ama ilk paragrafınız bununfork + exec
denizaltı için de çağrıldığını gösteriyor . Neyi yanlış yapıyorum?