Я рекомендую использовать:
#!/bin/bash
Он не на 100% переносим (некоторые системы размещаются bashв другом месте, кроме /bin), но тот факт, что во многих существующих сценариях используются #!/bin/bashразличные операционные системы, заставляет /bin/bashпо крайней мере создать символическую ссылку на основное местоположение.
Альтернатива:
#!/usr/bin/env bash
было предложено - но нет никакой гарантии, что envкоманда находится в /usr/bin(и я использовал системы, где это не так). Кроме того, эта форма будет использовать первый экземпляр bashтекущего пользователя $PATH, который может не подходить для оболочки bash.
(Но он /usr/bin/envдолжен работать на любой достаточно современной системе, либо потому, что она envесть, /usr/binлибо потому, что система делает что-то, чтобы заставить ее работать. Система, о которой я говорил выше, была SunOS 4, которую я, вероятно, не использовал около 25 лет.)
Если вам нужен сценарий для запуска в системе, в которой его нет /bin/bash, вы можете изменить сценарий так, чтобы он указывал на правильное местоположение (что, по общему признанию, неудобно).
Я обсудил компромиссы более подробно в своем ответе на этот вопрос .
Несколько неясное обновление: одна система, которую я использую, Termux , слой , похожий на Linux для настольных компьютеров и работающий под Android, не имеет /bin/bash( bashесть /data/data/com.termux/files/usr/bin/bash), но имеет специальную поддержку для поддержки #!/bin/bash.
/usr/local/bin/bashна OpenBSD.