Number of Processes Started, by shell and test case ID yash zsh ash dash bash-5 mksh bash-4 osh osh>min Description 01 ^ ^ ^ ^ ^ ^ ^ ^ echo hi 02 ^ ^ ^ ^ ^ ^ ^ ^^ 2>1 date 03 ^ ^ ^ ^ ^ ^^ ^ ^^ 2>1 date ; 04 ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ date; echo hi 05 ^ ^ ^ ^ ^ ^^ ^^ ^^ 2>1 echo hi; date 06 ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ 3>2 date; date 07 ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^ 3>2 { date; date; } 08 ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^^ 3>2 date; { date; } 09 ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ . _tmp/sourced.sh 10 ^ ^ ^ ^ ^^ ^^ ^^ ^ (echo hi) 11 ^ ^ ^ ^ ^^ ^^ ^^ ^^ 2>1 (date) 12 ^ ^ ^ ^ ^^ ^^ ^^ ^^ 2>1 ( ( date ) ) 13 ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^ 3>2 ( ( date ) ); echo hi 14 ^ ^ ^ ^ ^^ ^^ ^^ ^^^ 3>1 echo hi; (date) 15 ^^ ^ ^ ^ ^^ ^^ ^^ ^^^ 3>1 (date;) > /tmp/out.txt 16 ^^ ^^ ^^ ^^ ^^^ ^^^ ^^^ ^^ (date; echo hi) 17 ^^ ^^ ^^ ^^ ^^ ^^ ^^^ ^^^ 3>2 echo $(date) 18 ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ echo $(echo hi) 19 ^^ ^^ ^^ ^^ ^^^ ^^ ^^^ ^^^ 3>2 echo $( ( date ) ) 20 ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^^ 4>3 echo $( ( date ); echo hi ) 21 ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ( echo hi ); echo done 22 ^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^^ 4>2 date | wc -l 23 ^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ 3>2 echo a | wc -l 24 ^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ 3>2 command echo a | wc -l 25 ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^^ ^^^^ 4>3 command date | wc -l 26 ^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^^ 4>2 ( date ) | wc -l 27 ^^ ^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ 3>2 date | read x 28 ^^ ^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ 3>2 { echo a; echo b; } | wc -l 29 ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ { echo a; echo b; } | wc -l; echo done 30 ^^ ^^ ^^^ ^^^ ^^^^ ^^^^ ^^^^ ^^^^ 4>2 { echo a; date; } | wc -l 31 ^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ 3>2 ( echo a; echo b ) | wc -l 32 ^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^ ^^^^ 4>2 ( echo a; echo b ) | ( wc -l ) TOTAL 60 65 68 68 78 80 82 89 Cases where ... OSH isn't the minimum: 24 OSH starts more than bash: 9 OSH starts fewer than bash: 2