Я бы сказал, что «хороших практик» для расширений файлов не существует, строго по техническим причинам: файловые системы Unix / Linux / * BSD сами по себе не поддерживают расширения. То, что вы называете расширением, является просто суффиксом одного имени файла. Это отличается от файловых систем и операционных систем VM / CMS, VMS, MS-DOS и Windows, где специальное место в морально-эквивалентном эквиваленте зарезервировано для расширения.
Эта маленькая напыщенная речь сейчас закончена, я думаю, что немного глупо ставить суффикс ".sh", ".ksh" или ".bash" в имени файла сценария оболочки. Программа - это программа: нет никакой выгоды в различении того, что исполняется. Ни Unix, ни Linux, ни ядро не решили вызвать интерпретатор какого-либо файла только из-за суффикса имени файла. Все это делается #!
строкой или какой-то другой последовательностью байтов "магического числа" в начале файла. Фактически, решение о том, что выполнять на основе имени файла с расширением, является одним из факторов, который делает Windows магнитом вредоносного ПО. Посмотрите, сколько мошеннических программ Windows использует файл с именем "thing.jpg.exe "- по умолчанию в более новых версиях Windows расширение" .exe "не отображается, и пользователю предлагается просто дважды щелкнуть"
То, что вы можете считать прямой командой, часто так или иначе является сценарием оболочки. Иногда cc
это был sh-скрипт, firefox
это sh-скрипт, startx
это sh-скрипт. Я не верю, что для обозначения скрипта суффиксом «.sh» есть когнитивная или организационная выгода.
bash script.sh
(илиsh
, конечно,).