Это не ошибка, а ожидаемое и задокументированное поведение / bin / sh в Solaris.Цитируется страница ожидания wait (1) :
Если pid не является идентификатором активного процесса, утилита ожидания немедленно вернется, а код возврата будет 0.
В более ранней документации оболочки Bourne не указывалось, что следует делать при вызове с уже мертвыми процессами, поэтому результатом было неопределенное поведение.Документация была исправлена, чтобы прояснить этот момент в 1998 году. Ksh был рекомендованным способом получения ожидаемого статуса возврата: http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=4068875
В Solaris 10 и более ранних версиях / bin / sh является устаревшим языком сценариев, которыйне будет использоваться с новым кодом.Вы бы предпочли использовать / bin / ksh или / usr / xpg4 / bin / sh вместо сценариев POSIX.Solaris 11 Express предоставляет POSIX / bin / sh, поэтому таких проблем больше не будет.