Polecam użycie:
#!/bin/bash
Nie jest w 100% przenośny (niektóre systemy umieszczają bashw lokalizacji innej niż /bin), ale fakt, że wiele istniejących skryptów używa #!/bin/bashpresji różnych systemów operacyjnych, aby stworzyć /bin/bashprzynajmniej dowiązanie symboliczne do głównej lokalizacji.
Alternatywa dla:
#!/usr/bin/env bash
zostało zasugerowane - ale nie ma gwarancji, że envpolecenie jest w /usr/bin(i użyłem systemów, których nie ma). Ponadto w tym formularzu będzie używana pierwsza instancja bashobecnych użytkowników $PATH, która może nie być odpowiednią wersją powłoki bash.
(Ale /usr/bin/envpowinien działać na każdym dość nowoczesnym systemie, ponieważ envjest w /usr/binsystemie 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( bashjest /data/data/com.termux/files/usr/bin/bash) - ale ma specjalną obsługę do obsługi #!/bin/bash.
/usr/local/bin/bashna OpenBSD.