Cabe señalar que $BASHPIDes nuevo en BASH 4. Si está utilizando BASH 3.x, debe usar$$
Bruno Bronosky
Respuestas:
19
Se proporciona un ejemplo en la BASHPIDdescripción de la página de manual de bash:
BASHPID
Expands to the process id of the current bash process.This
differs from $$ under certain circumstances, such as subshells
that do not require bash to be re-initialized.
Aquí hay un ejemplo de una subshell que muestra el contenido de la variable, junto con $$y el contenido BASHPIDexterno de la subshell.
$ echo $(echo $BASHPID $$) $$ $BASHPID
25680169201692016920# | | | |# | | | -- $BASHPID outside of the subshell# | | -- $$ outside of the subshell# | -- $$ inside of the subshell# -- $BASHPID inside of the subshell
Subcapas. $$POSIX especifica y siempre permanece el valor del proceso de shell original. $BASHPIDes una variable específica de Bash y siempre es el valor del proceso desde el que se desreferencia la variable, contando subcapas.
$ f(){ printf '%s: %d, %d\n'"$1" $$ $BASHPID;};
$ ${BASH_VERSION+shopt -s lastpipe};set+m;
$ f 1>&2| f 22:31490,314901:31490,32545
Logré convencer al mantenedor de mksh para agregar BASHPIDa la versión más reciente, por lo que es algo portátil. También es posible implementarlo BASHPIDen ksh93 usted mismo en muchas plataformas.
$BASHPIDes nuevo en BASH 4. Si está utilizando BASH 3.x, debe usar$$Respuestas:
Se proporciona un ejemplo en la
BASHPIDdescripción de la página de manual de bash:Aquí hay un ejemplo de una subshell que muestra el contenido de la variable, junto con
$$y el contenidoBASHPIDexterno de la subshell.fuente
Subcapas.
$$POSIX especifica y siempre permanece el valor del proceso de shell original.$BASHPIDes una variable específica de Bash y siempre es el valor del proceso desde el que se desreferencia la variable, contando subcapas.Logré convencer al mantenedor de mksh para agregar
BASHPIDa la versión más reciente, por lo que es algo portátil. También es posible implementarloBASHPIDen ksh93 usted mismo en muchas plataformas.fuente