Em vez de ( something )
, que lança something
em um subshell, use { something ; }
, que lança something
no shell atual
Você precisa de espaços após o {
e também deve ter um ;
(ou uma nova linha) antes do }
.
Ex:
$ { echo "hello $BASHPID";sleep 5;echo "hello again $BASHPID" ; }
hello 3536
hello again 3536
Note, no entanto, que se você iniciar alguns comandos complexos (ou comandos canalizados), eles estarão em uma sub-camada na maioria das vezes.
E a maneira "portátil" de obter o pid do seu shell atual é $$
.
Então, eu escreveria seu teste como:
{ echo "hello $$"; sleep 5 ; echo "hello again $$" ; }
(o sono não é realmente útil de qualquer maneira aqui)