Я знаю, что в bash мы можем создавать подоболочки, используя круглые скобки ( и ). По bash странице man:
(list) list is executed in a subshell environment
Кроме того, чтобы получить текущий идентификатор процесса, мы используем:
echo $$
Теперь мой вопрос: как получить идентификатор процесса подоболочки, созданной с помощью ( и ) в командной строке?
Если я использую это:
echo $$; ( echo $$; )
Я получу идентификатор процесса родительской оболочки, дважды напечатанный на stdout, поскольку $$ расширяется даже до создания подоболочки. Итак, как реально заставить ленивую экспансию?
[Решение должно работать на Mac, а не только на Linux]
Обновление:
Рекомендуемый связанный ответ не работает, поскольку echo $BASHPID не работает на моем Mac и возвращает пустое.