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