Причём не только с расширением «.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.