Clark J. Wang wrote:

Running a cmd in background (by &) would not create subshell. Simple
testing:

#!/bin/bash

function foo()
{
    echo $$
}

echo $$
foo &

### END OF SCRIPT ###

The 2 $$s output the same.

This doesn't mean that it doesn't create a subshell. It creates one, since it can't replace your foreground process.

It just shows that $$ does what it should do, it reports the relevant PID of the parent ("main") shell you use. As far as I can see, this applies to all kinds of subshells like
- explicit ones (...)
- pipeline components
- command substitution
- process substitution
- async shells (like above, running your function)
- ...

J.

Reply via email to