Number of Processes Started, by shell and test case ID yash osh zsh ash dash mksh bash-5 bash-4 osh>min Description 01 ^ ^ ^ ^ ^ ^ ^ ^ echo hi 02 ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ 2>1 date 03 ^ ^ ^ ^ ^ ^ ^ ^ date ; 04 ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ trap 'echo mytrap' EXIT; date 05 ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ date; echo hi 06 ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ 2>1 echo hi; date 07 ^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ 3>2 date; date 08 ^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ 3>2 { date; date; } 09 ^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ 3>2 date; { date; } 10 ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ . _tmp/sourced.sh 11 ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ 2>1 (echo hi) 12 ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ 2>1 (date) 13 ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ 2>1 ( ( date ) ) 14 ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ( ( date ) ); echo hi 15 ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ 2>1 echo hi; (date) 16 ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ (date;) > /tmp/out.txt 17 ^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ 3>2 (date; echo hi) 18 ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ echo $(date) 19 ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ echo $(echo hi) 20 ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ echo $( ( date ) ) 21 ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ echo $( ( date ); echo hi ) 22 ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ( echo hi ); echo done 23 ^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ 3>2 date | wc -l 24 ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ! date | wc -l 25 ^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ 3>2 echo a | wc -l 26 ^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ 3>2 command echo a | wc -l 27 ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^^ command date | wc -l 28 ^^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^^ ! command date | wc -l 29 ^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ 3>2 ( date ) | wc -l 30 ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^ ^^^ date | read x 31 ^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ 3>2 { echo a; echo b; } | wc -l 32 ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ { echo a; echo b; } | wc -l; echo done 33 ^^ ^^^ ^^^ ^^^ ^^^ ^^^^ ^^^^ ^^^^ 3>2 { echo a; date; } | wc -l 34 ^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ 3>2 ( echo a; echo b ) | wc -l 35 ^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ 3>2 ( echo a; echo b ) | ( wc -l ) 36 ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ echo hi & wait 37 ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ date & wait 38 ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ echo hi | wc -l & wait 39 ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ date | wc -l & wait 40 ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ trap 'echo mytrap' EXIT; date & wait 41 ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ trap 'echo mytrap' EXIT; date | wc -l & wait 42 ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ { trap 'echo mytrap' EXIT; date; } & wait TOTAL 87 104 104 105 105 106 107 110 Cases where ... OSH isn't the minimum: 18 OSH starts more than bash: 0 OSH starts fewer than bash: 6