Ответ 1
Раздел INPUT FILES в стандарте для sh гласит:
Входной файл должен быть текстовым файлом, за исключением того, что длина строк не ограничена. Если входной файл пуст или состоит только из пустых строк или комментариев или обоих, sh должен выйти с нулевым статусом выхода.
Термин "текстовый файл" определен в разделе 3.395 здесь как:
Файл, содержащий символы, помещенные в ноль или более строк. Строки не содержат символов NUL, и ни один из них не может превышать длину {LINE_MAX} байтов, включая <newline> персонаж. Хотя POSIX.1-2008 не различает текстовые файлы и двоичные файлы (см. Стандарт ISO C), многие утилиты производят только предсказуемый или значимый вывод при работе с текстовыми файлами. Стандартные утилиты, которые имеют такие ограничения, всегда указывают "текстовые файлы" в разделах STDIN или INPUT FILES
Если вход не является текстовым файлом (которого нет, если он содержит нулевые байты), поведение не имеет смысла и не предсказуемо.