Além de bash ' $BASHPID , você pode portá-lo com:
pid=$(exec sh -c 'echo "$PPID"')
Exemplo:
(pid=$(exec sh -c 'echo "$PPID"'); echo "$$ $pid")
Você pode transformá-lo em uma função:
# usage getpid [varname]
getpid(){
pid=$(exec sh -c 'echo "$PPID"')
test "$1" && eval "$1=\$pid"
}
Observe que alguns shells (por exemplo, zsh ou ksh93 ) NÃO iniciam um subprocesso para cada subshell criado com (...) ; Nesse caso, $pid pode ser o mesmo que $$ , o que é correto, porque esse é o PID do processo getpid foi chamado.