Я рекомендую використовувати:
#!/bin/bash
Це не 100% портативний (деякі системи розміщуються bash
в іншому місці /bin
), а те, що багато існуючих сценаріїв використовують #!/bin/bash
тиск різних операційних систем, щоб зробити /bin/bash
хоча б симпосилання на основне місцеположення.
Альтернатива:
#!/usr/bin/env bash
було запропоновано - але немає гарантії, що env
команда є /usr/bin
(і я використовував системи там, де її немає). Крім того, ця форма використовуватиме перший екземпляр bash
поточних користувачів $PATH
, що може бути не підходящою версією bash shell.
(Але /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.