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.
$BASHPID
es nuevo en BASH 4. Si está utilizando BASH 3.x, debe usar$$
Respuestas:
Se proporciona un ejemplo en la
BASHPID
descripció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 contenidoBASHPID
externo de la subshell.fuente
Subcapas.
$$
POSIX especifica y siempre permanece el valor del proceso de shell original.$BASHPID
es 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
BASHPID
a la versión más reciente, por lo que es algo portátil. También es posible implementarloBASHPID
en ksh93 usted mismo en muchas plataformas.fuente