Eles se parecem com o mesmo comando, mas a razão pela qual eles diferem é que o estado do sistema foi alterado como resultado do primeiro comando. Especificamente, o primeiro cat
consumiu o arquivo inteiro, portanto, o segundo cat
não tem mais nada para ler, atinge o EOF (fim do arquivo) imediatamente e sai.
O motivo por trás disso é que você está usando exatamente a mesma descrição de arquivo (aquela que você criou com exec < infile
e atribuída ao descritor de arquivo 3
) para ambas as invocações de cat
. Uma das coisas associadas a uma descrição de arquivo aberto é um deslocamento de arquivo. Então, o primeiro cat
lê o arquivo inteiro, deixa o offset no final, e o segundo tenta pegar do final do arquivo e não encontra nada para ler.