O que você está procurando é possível, mas talvez não exatamente como você imagina. A maneira como eu o vi com mais frequência (e é admitidamente uma ocorrência muito rara) é criar o arquivo que está sendo lido em um arquivo especial chamado pipe (aka FIFO), usando o comando mknod
:
mknod file.txt p
Você precisaria então iniciar o script que deseja usar para gerar o "conteúdo do arquivo" em um shell separado e fazer com que ele seja reiniciado automaticamente quando for concluído para permitir várias leituras desse arquivo especial. O STDOUT do script seria redirecionado para o pipe nomeado e o script pausaria até que algum outro processo - o processo do usuário original - começasse a ler o canal de alguma forma. Assim que o script terminasse, o sinal "EOF" se propagaria para o processo do usuário, fazendo com que tudo parecesse normal.