Исходя из ответа @ theomega и вопроса @ Идана в комментариях, она необходима, помимо прочего, потому что некоторые системы UNIX / Linux имеют более одной командной оболочки.
Каждая командная оболочка имеет свой синтаксис, поэтому она дает возможность указать, какую оболочку следует использовать для выполнения сценария, даже если вы не указали ее в своей команде запуска, набрав (например)
./myscript.sh
вместо
/bin/sh ./myscript.sh
Обратите внимание, что она может также использоваться в сценариях, написанных на языках без оболочки, таких как Perl; в случае, если бы вы положили
#!/usr/bin/perl
вверху вашего скрипта.