What is the difference between these two constructs,

  • echo foo | bar
  • bar <( echo foo )

I thought both of them would set up STDIN the same way. However, that seems to not be the case for me (exact example)

echo watchfile | entr -np echo FOO
entr -np echo FOO <( echo watchfile )

Top does what I want, bottom does not.