On Thu, 14 Jul 2005, Dave Anderson wrote: > It also, at least under OpenBSD, has the serious problem that "$$" > isn't the PID of the shell running the script but rather the PID of the > "original" shell (whatever exactly that means; some testing suggests > that it's the last process on the PPID chain which is still in this > process group) and I haven't yet found any straightforward way of > getting the PID of the "bottom-level" shell, which is what is needed > for the stale-lock testing to work at all when the exclusion needed is > among scripts run in subshells of the same shell. (I realize that I > could create a trivial program which writes its PPID to stdout, or hack > /bin/sh to add a new variable which contains the PID I want -- but I'd > prefer to use the tools which come as part of the base system. This > has also left me rather curious as to *why* the PID and PPID of the > "original" shell are easily accessible in scripts but those of the > subshell actually running the script aren't.)
I did not check your script, but POSIX says this: $ Expands to the decimal process ID of the invoked shell. In a subshell (see Shell Execution Environment ), '$' shall expand to the same value as that of the current shell. There's a similar phrase in the man page, -Otto