I decisively conclude that Shell's process group ID = foreground job process group ID from the 2 sources below. When a background job is selected to run in the foreground, is it the shell's process group ID that changes to the foreground job's process group ID or the reverse?
To facilitate the implementation of the user interface to job control, the operating system maintains the notion of a current terminal process group ID. Members of this process group (processes whose process group ID is equal to the current terminal process group ID) receive keyboard-generated signals such as SIGINT. These processes are said to be in the foreground. Background processes are those whose process group ID differs from the terminal’s; such processes are immune to keyboard-generated signals. (Source)
$sleep 3000 & $sleep 2000 & $ps xao pid,ppid,pgid,sid,tty,comm | grep tty PID PPID PGID SID TTY COMMAND 1153 1135 1153 1153 tty1 bash 1173 1153 1173 1153 tty1 sleep 1189 1153 1189 1153 tty1 sleep 1219 1153 1219 1153 tty1 ps 1220 1153 1219 1153 tty1 grep