extensies hebben in Linux / Unix uberhaupt geen betekenis zoals dat in Windows/DOS wel het geval is. Het is dus geen probleem om een script .bash te noemen (of wat je dan maar wil - .exe, .jpg, .doc - werkt allemaal net zo goed). Als het goed is wordt het ook niet gebruikt om te bepalen welke icoontjes je ziet in nautilus e.d.
In principe kijkt linux naar de execute bits (ls -l) om te bepalen of het uitvoerbaar is. Zo ja dan worden de eerste 2 bytes van de binary bepaald wat er mee gebeurd. Als daar #! staat wordt er een externe interpreter aangeroepen die het uitvoerd en de interpreter is de rest van de eerste regel (bijv. #!/bin/sh) anders wordt het als binary code geinterpreteerd zoals ELF. Als je dus een php script wilt kunnen uitvoeren zet je #!/usr/bin/php op de eerste regel en zet je de exe bits. En aanroepen met bijv ./foo.php
Als het niet executable is moet je zelf de interpreter aangeven, bijv door sh -c script.sh ook hier heeft de .sh geen enkele betekenis.
Het is dus ook niet zo dat een .bat of een .exe automatisch ook gelijk executable is.
Er zijn wel conventies, die deels overeenkomen met wat in Windows gebruikelijk is (maar wie eerst was ... weet ik niet).
shell scripts hebben vaak een .sh, perl een .pl, plaatjes jpg, png of gif. binaries hebben meestal geen extensie of .bin
Kortom .bash is wellicht niet gangbaar maar kan net zo goed.
en sh is toch ook al lang niet meer sh maar dash in ubuntu, maar er zijn talloze shells.