Best practices shebangs
Знак
-
после/bin/bash
предовтращает замену старым интерпретатором. Ибо ядро Linux (но не других систем!) обрабатывает всё, что следует за первым “словом” (/bin/bash
in this case), как один аргумент - предотвратить это можно, как раз, добавив дефис - признак конца аргументов.
/usr/bin/env
- утилита, которая ищет исполняемые файл в$PATH
, ибо bash на разных системах может быть расположен не в/bin/bash
.env
как раз помогает сделать скрипт более переносимым. Этот способ считается стандартным решением проблемы мобильности, но предполагается, что env будет находится в/usr/bin
😐.
Соусы:
- Книга Bash и кибербезопасность → Глава 1. Работа с командной строкой → Основы работы с командной строкой → От командной строки до скрипта
- Книга Идиомы Bash → Глава 9. Файлы и не только → Shebang!