A substituição do comando $(…)
executa o comando em um subshell. Uma subcamada começa como uma cópia idêntica da concha principal, mas a partir desse ponto a concha principal e a subcamada vivem sua própria vida.
- O processo do shell cria um tubo e garfos.
- O filho executa
popd
com sua saída conectada ao canal e, em seguida, sai. - O pai lê os dados do pipe e os substitui na linha de comando.
Como popd
é executado no processo filho, seu efeito é limitado ao processo filho. O diretório é retirado da pilha da pilha da criança. Nada acontece com a pilha no pai.
¹ Quase idêntico; as diferenças não são relevantes aqui.