Polecam użycie:
#!/bin/bash
Nie jest w 100% przenośny (niektóre systemy umieszczają bash
w lokalizacji innej niż /bin
), ale fakt, że wiele istniejących skryptów używa #!/bin/bash
presji różnych systemów operacyjnych, aby stworzyć /bin/bash
przynajmniej dowiązanie symboliczne do głównej lokalizacji.
Alternatywa dla:
#!/usr/bin/env bash
zostało zasugerowane - ale nie ma gwarancji, że env
polecenie jest w /usr/bin
(i użyłem systemów, których nie ma). Ponadto w tym formularzu będzie używana pierwsza instancja bash
obecnych użytkowników $PATH
, która może nie być odpowiednią wersją powłoki bash.
(Ale /usr/bin/env
powinien działać na każdym dość nowoczesnym systemie, ponieważ env
jest w /usr/bin
systemie lub dlatego, że system robi coś, co sprawia, że działa. System, o którym mówiłem powyżej, to SunOS 4, którego prawdopodobnie nie używałem od około 25 lat.)
Jeśli potrzebujesz skryptu, aby działał w systemie, który go nie ma /bin/bash
, możesz zmodyfikować skrypt, aby wskazywał właściwą lokalizację (co jest oczywiście niewygodne).
Bardziej szczegółowo omówiłem kompromisy w mojej odpowiedzi na to pytanie .
Trochę niejasna aktualizacja: jeden system, którego używam, Termux , warstwa podobna do Linuksa, która działa pod Androidem, nie ma /bin/bash
( bash
jest /data/data/com.termux/files/usr/bin/bash
) - ale ma specjalną obsługę do obsługi #!/bin/bash
.
/usr/local/bin/bash
na OpenBSD.