Обычно я ставлю шебанг для bash наверху моих сценариев оболочки, например:
#!/usr/bin/bash
Однако я вижу много других вариантов этого, таких как #!/bin/bash
или #!/usr/local/bin/bash
и т. Д.
Мне кажется, что эти различные соглашения приведут к проблемам совместимости или переносимости.Если мой bash находится в другом месте, чем кто-либо другой, мой сценарий не будет работать на их компьютере, и наоборот.
Если интерпретатор оболочки, такой как bash, по-видимому, не всегда находится в одном и том же месте, не правда ли, НЕ ПРАВИЛЬНО использовать жестко закодированный путь в скрипте?
Я понял, что вы можете использовать несколькоболее гибкий или менее системно-зависимый подход, подобный этому:
#!/usr/bin/env bash
Что приводит к (или?) локальной версии bash, где бы она ни была установлена.
Последний вариант всегда работает?Или есть лучший подход, который имеет наибольшую вероятность ссылки на любой системный bash, независимо от того, где он установлен?