Причём не только с расширением “.sh”, а вообще с любым. Это поведение по умолчанию и при этом задокументировано! Вот выдержка из man’a:
If neither the –lsbsysinit option nor the –regex option is given then the names must consist entirely of upper and lower case letters, digits, underscores, and hyphens.