I don't understand the following:
mkfifo p; $ (>p ps -f | >>p echo $BASHPID) & [1] 983527 $ cat p 983529 PID PPID C STIME TTY TIME CMD 981815 165343 0 19:57 pts/27 00:00:00 bash 983527 981815 0 21:09 pts/27 00:00:00 bash # <- child bash process `(...)` 983528 983527 0 21:09 pts/27 00:00:00 ps -f 983530 981815 0 21:09 pts/27 00:00:00 cat p (...) & results in a child process with PID 983527. It is a bash process.
ps -f executes in a child process of (...) with PID 983528. It is the left hand-side component command of the pipeline ...|....
echo $BASHPID reports to be executing in a process with PID 983529. It ought to be the right hand-side component of the pipeline ...|... and it ought to be listed as a bash process.
Is that last interpretation correct? And why can we not see that last process listed by the ps -f command?