Ich empfehle:
#!/bin/bash
Es ist nicht 100% portabel (einige Systeme befinden sich bashan einem anderen Ort als /bin), aber die Tatsache, dass viele vorhandene Skripte #!/bin/bashDruck auf verschiedene Betriebssysteme ausüben, um /bin/bashzumindest eine Symlink-Verbindung zum Hauptstandort herzustellen .
Die Alternative von:
#!/usr/bin/env bash
wurde vorgeschlagen - aber es gibt keine Garantie dafür, dass der envBefehl vorhanden ist /usr/bin(und ich habe Systeme verwendet, bei denen dies nicht der Fall ist). Darüber hinaus wird in diesem Formular die erste Instanz von bashin den aktuellen Benutzern verwendet $PATH, die möglicherweise keine geeignete Version der Bash-Shell ist.
(Sollte aber /usr/bin/envauf jedem einigermaßen modernen System funktionieren, entweder weil enves installiert ist /usr/binoder weil das System etwas tut, damit es funktioniert. Das System, auf das ich oben Bezug genommen habe, war SunOS 4, das ich wahrscheinlich seit etwa 25 Jahren nicht mehr verwendet habe.)
Wenn Sie ein Skript benötigen, um auf einem System ausgeführt zu werden, das nicht vorhanden ist /bin/bash, können Sie das Skript so ändern , dass es auf den richtigen Speicherort verweist (was zugegebenermaßen unpraktisch ist).
Ich habe die Kompromisse in meiner Antwort auf diese Frage ausführlicher erörtert .
Ein etwas obskures Update: Ein System, das ich verwende, Termux , eine Desktop-Linux-ähnliche Schicht, die unter Android ausgeführt wird, hat /bin/bash( bashist /data/data/com.termux/files/usr/bin/bash) nicht - aber es muss speziell behandelt werden #!/bin/bash.
/usr/local/bin/bashauf OpenBSD.