I saw this video which explains that when running a command in parentheses it actually runs the command in a subshell, which is a child process of the original shell. Running the following experiment:
// one shell with PID 5344
~$ (find /)
// another shell
~$ ps l
F   UID     PID    PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
...
0  1000    5344    5333  20   0  10888  5220 do_wai Ss   pts/0      0:00 bash
0  1000    5384    5333  20   0  10888  5140 do_wai Ss   pts/1      0:00 bash
0  1000    7239    5344  20   0  10860  3444 -      R+   pts/0      0:00 find /
4  1000    7240    5384  20   0  11400  3224 -      R+   pts/1      0:00 ps l
We can see that find / is a child of 5344, with no other shell in between. Wheres running:
// one shell with PID 5344
(cd /; find /)
// second shell
~$ ps l
F   UID     PID    PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
...
0  1000    5344    5333  20   0  10888  5220 do_wai Ss   pts/0      0:00 bash
0  1000    5384    5333  20   0  10888  5140 do_wai Ss   pts/1      0:00 bash
1  1000    7379    5344  20   0  10888  3036 do_wai S+   pts/0      0:00 bash
4  1000    7380    7379  20   0  10864  3536 -      R+   pts/0      0:01 find /
4  1000    7381    5384  20   0  11400  3184 -      R+   pts/1      0:00 ps l
Now we can see that other shell in between. My guess is that it is some optimization of bash: In the first case, it doesn't really have to spawn another shell, so it just doesn't do it. In the second case, since the commands include cd /, which will have affect on the current shell, it has to spawn another process. Is that so?

