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