Como primeiro palpite, eu suponho que as subshells iniciadas com ( .. )
não usam controle de trabalho , da mesma forma que os scripts não interativos não. No entanto, $-
parece conter o m
para o controle de trabalho, mesmo entre parênteses (assim como i
para interativo):
$ echo $-
himuBs
$ bash -c 'echo $-'
hBc
$ ( echo $-; )
himuBs
Mas acho que isso é uma mentira, já que ativar explicitamente o controle de tarefas faz com que alguns grupos de processos apareçam.
Tudo isso em um único PG:
$ ( (ps j; ps j); ps j;) | awk 'NR == 1 || /[p]s/'
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
32524 32525 32522 32368 pts/23 32522 R+ 1000 0:00 ps j
32524 32526 32522 32368 pts/23 32522 R+ 1000 0:00 ps j
32522 32527 32522 32368 pts/23 32522 R+ 1000 0:00 ps j
Estes não são:
$ ( set -m; (ps j; ps j); ps j;) | awk 'NR == 1 || /[p]s/'
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
32518 32519 32518 32368 pts/23 32516 R 1000 0:00 ps j
32518 32520 32518 32368 pts/23 32516 R 1000 0:00 ps j
32516 32521 32521 32368 pts/23 32516 R 1000 0:00 ps j