Разница между bash pid и $$

Я новичок в bash-скриптинге, и у меня есть домашняя работа. Я понял большинство вещей, но есть часть, которая говорит, что я должен повторить pid родительского bash и pid двух подоболочек, которые я буду запускать. Так я посмотрел онлайн и нашел это(Проект документации Linux):

#!/bin/bash4

echo "\$\$ outside of subshell = $"                              # 9602
echo "\$BASH_SUBSHELL  outside of subshell = $BASH_SUBSHELL"      # 0
echo "\$BASHPID outside of subshell = $BASHPID"                   # 9602

echo

( echo "\$\$ inside of subshell = $"                             # 9602
  echo "\$BASH_SUBSHELL inside of subshell = $BASH_SUBSHELL"      # 1
  echo "\$BASHPID inside of subshell = $BASHPID" )                # 9603
  # Note that $ returns PID of parent process.

Итак, вот мои вопросы:

1) Что печатает первый эхо? Это pid родительского bash?

2) Почему 2-е эхо выводит 0?

3) Является ли $ BASH_SUBSHELL командой или переменной?

4) Я делаю все на Mac, я попробую все это на машине с Linux через несколько дней, но всякий раз, когда я запускаю этот скрипт$BASHPID ничего не возвращает, я просто получаю новую строку. Это потому что я запускаю это на Mac и$BASHPID не работает на Mac?

Ответы на вопрос(2)

Ваш ответ на вопрос