К сожалению, до bash версии 4, когда был представлен $ BASHPID, не было простого способа сделать это.Одна вещь, которую вы можете сделать, это написать крошечную программу, которая печатает родительский PID:
int main()
{
printf("%d\n", getppid());
return 0;
}
Если вы скомпилируете это как ppid
и поместите его в свой путь, вы можете вызвать его, например:
$ (echo $$; ppid)
2139
29519
$ (x=$(ppid); echo $x)
29521
Одна странность, которую я заметил, однако, заключается в том, что если вы напишите
$ (ppid)
, то, похоже, на самом деле он не запускается в подоболочке - вам нужно как минимум две команды внутрикруглые скобки для bash на самом деле запустить их в подоболочке.