Eu diria que não existem "boas práticas" para extensões de arquivos, estritamente em um aspecto técnico: os sistemas de arquivos Unix / Linux / * BSD não suportam extensões per se. O que você está chamando de extensão é meramente um sufixo de um único nome de arquivo. Isso é diferente dos sistemas de arquivos e sistemas operacionais VM / CMS, VMS, MS-DOS e Windows, onde um ponto especial no inode-moral-equivalent é reservado para uma extensão.
Esse pequeno discurso agora acabou, acho um pouco ridículo colocar um sufixo ".sh" ou ".ksh" ou ".bash" em um nome de arquivo de script de shell. Um programa é um programa: não existe benefício em distinguir o que é executado. Nenhum unix ou linux ou qualquer kernel decidiu chamar um interpretador em algum arquivo apenas por causa de um sufixo de nome de arquivo. Tudo é feito pela linha #!
, ou alguma outra sequência de bytes "número mágico" no início do arquivo. Na verdade, decidir o que executar com base em um nome de arquivo "extensão" é um dos fatores que torna o Windows um ímã de malware. Veja quantos scams de malware do Windows envolvem um arquivo chamado "something.jpg.exe" - por padrão, o Windows mais recente não mostra a extensão ".exe" e incentiva o usuário a clicar duas vezes na "imagem". Em vez de uma exibição de imagem em execução, o malware é executado.
O que você pode pensar como um comando direto é geralmente um script de shell. Às vezes cc
tem sido um script sh, firefox
é um script sh, startx
é um script sh. Não acredito que exista um benefício cognitivo ou organizacional para marcar um script com o sufixo ".sh".