Как получить скрипт bash, работающий на FreeBSD, OpenBSD и Linux без его изменения?

извините, заголовок может быть немного раздражающим, но я не знал ничего лучше. В любом случае, я хочу, чтобы скрипт bash работал на FreeBSD, OpenBSD и Linux без его изменения, но bash не находится в одном месте в Linux и BSD.

Итак, если я напишу #!/bin/bash тогда он не будет работать на BSD, потому что оболочка bash находится в /usr/local/bin/bash там. Есть ли какое-либо решение, чтобы заставить этот скрипт работать на обоих?

или мне действительно нужно отправить два сценария с разными пути...?

2 ответов


используя env в shebang (#!/usr/bin/env bash) должен сделать скрипт OS агностическим.


мне нравится ответ об использовании #!/usr/bin/env bash Это интересный и отличный ответ, но это будет работать только в том случае, если Баш находится на пути.

другой вариант может быть использовать #!/bin/sh, который является наиболее универсально совместимы расположение раковины. Затем попросите сценарий сделать что-то в sh, например, проверить, где bash установлен (если bash - это даже установлен). Другой вариант может быть иметь в обоих местах. Создание другой установки может показаться излишним, но эта цель может быть достигнута так же просто, как создание жесткой связи, чтобы bash действительно существовал в обоих местах.