Yo diría que no existen "buenas prácticas" para las extensiones de archivos, estrictamente por un tecnicismo: los sistemas de archivos Unix / Linux / * BSD no admiten extensiones per se. Lo que está llamando una extensión es simplemente un sufijo de un solo nombre de archivo. Eso es diferente a los sistemas de archivos y sistemas operativos VM / CMS, VMS, MS-DOS y Windows donde un lugar especial en el equivalente de inodo-moral está reservado para una extensión.
Ahora que acabo de hablar, creo que es un poco tonto poner un sufijo ".sh" o ".ksh" o ".bash" en un nombre de archivo de script de shell. Un programa es un programa: no existe ningún beneficio en distinguir lo que se ejecuta. Ningún unix o linux o cualquier kernel ha decidido llamar a un intérprete en algún archivo solo por un sufijo de nombre de archivo. Todo se hace por la #!
línea, o alguna otra secuencia de "número mágico" de bytes al comienzo del archivo. De hecho, decidir qué ejecutar en función de una "extensión" de nombre de archivo es uno de los factores que hace de Windows un imán de malware. Mire cuántas estafas de malware de Windows involucran un archivo llamado "something.jpg.exe". Por defecto, las nuevas versiones de Windows no muestran la extensión ".exe" y aliente al usuario a hacer doble clic en "
Lo que se podría considerar como un comando directo es a menudo un script de shell de todos modos. A veces cc
ha sido un script sh, firefox
es un script sh, startx
es un script sh. No creo que haya un beneficio cognitivo u organizativo para marcar un script con un sufijo ".sh".
bash script.sh
(osh
, por supuesto).