Ez egy rossz válasz, de valamire ráhibáztál! :-D
Linux parancssorból próbálva - ahol a default shell bash - szintén nem működik, a tied meg igen. És csak akkor, ha a printf is az utasítászárójelen belül van. Az interpreter lehet /bin/sh is, amire Bourne shellt kellene indítania és mégis hasonlóan működik mindkét esetben.
Tehát fogtál egy olyan side effectet, amikor a transzparens utasítászárójel az stdin viselkedését módosítja a read számára. :-DD