É necessário ter uma introdução com todo o conceito de "descritores de arquivo" para entender essa resposta - O que é um "descritor de arquivo" e por que precisamos dele. Se você já tem essa introdução, pule para a resposta abaixo; Não Por favor, leia minha resposta neste tópico da SE, e depois voltar .
Resposta:
Na segunda maneira que apresentei na questão, passamos um heredoc para Bash em um descritor de arquivo diferente de 0 (neste caso - 5:
A primeira parte da frase, bash /dev/fd/5
, representa um bash com o descritor de arquivos 5 como sua entrada, e a segunda parte, 5<< EOF
, diz ao shell para escrever o here-doc nesse descritor de arquivo.
Notas:
- A hierarquia heredoc não tem nada a ver com o número do descritor de arquivos relevante.
- Eu dei o número 5 só porque é um bom número longe de zero. AFAIK, você poderia dar 50, ou 500, ou 50.000, e funcionaria da mesma maneira.