Я считаю, что файлы .sh по умолчанию принадлежат XCode, поэтому, если вы дважды щелкнете по одному из них, он откроется в XCode вместо выполнения.
Файлы .command и .tool по умолчанию принадлежат терминалу, поэтому, если вы дважды щелкните один из них, он откроется и запустится в терминале.
Я не знаю никаких других различий между ними.
Я тоже использовал .sh для сценариев оболочки, но недавно остановился, потому что начал писать свои сценарии оболочки на Zsh вместо sh, и было непонятно, пытаясь вспомнить, заканчивалась ли определенная команда на .sh или .zsh, так что я, наконец, просто поместил их все в ~ / bin / и убедился, что они исполняемые, и вообще не использую для них расширения файлов.