Ich empfehle:
#!/bin/bash
Es ist nicht 100% portabel (einige Systeme befinden sich bash
an einem anderen Ort als /bin
), aber die Tatsache, dass viele vorhandene Skripte #!/bin/bash
Druck auf verschiedene Betriebssysteme ausüben, um /bin/bash
zumindest eine Symlink-Verbindung zum Hauptstandort herzustellen .
Die Alternative von:
#!/usr/bin/env bash
wurde vorgeschlagen - aber es gibt keine Garantie dafür, dass der env
Befehl 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 bash
in den aktuellen Benutzern verwendet $PATH
, die möglicherweise keine geeignete Version der Bash-Shell ist.
(Sollte aber /usr/bin/env
auf jedem einigermaßen modernen System funktionieren, entweder weil env
es installiert ist /usr/bin
oder 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
( bash
ist /data/data/com.termux/files/usr/bin/bash
) nicht - aber es muss speziell behandelt werden #!/bin/bash
.
/usr/local/bin/bash
auf OpenBSD.