Я рекомендую использовать:
#!/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.