Brauchst du Shebang in allen Bash-Skripten? [Duplikat]

8

Angenommen, Sie haben ein Bash-Skript B, das Sie von einem anderen Bash-Skript A beziehen. B hat eine Reihe von Variablen- und Funktionsdefinitionen. A ist das Haupttreiberskript. Brauchen Sie die #! / Bin / bash Zeile über A und B? Was passiert, wenn Sie es tun und wenn nicht?

    
Raihan 30.09.2011, 19:55
quelle

3 Antworten

10

Der Shebang ist nur für solche Skripte obligatorisch, die vom Betriebssystem wie ausführbare Binärdateien ausgeführt werden sollen. Wenn Sie in einem anderen Skript suchen, wird der Shebang ignoriert.

Auf der anderen Seite. Wenn ein Skript als Quelle verwendet werden soll, dann ist es Konvention, keinen Shebang am Anfang zu setzen.

    
A.H. 30.09.2011, 20:01
quelle
10

Der Shebang wird verwendet, wenn Sie das Skript direkt als ausführbare Datei ausführen (zum Beispiel mit dem Befehl ./script.sh ). In diesem Fall teilt es dem Betriebssystem mit, welche ausführbare Datei ausgeführt werden soll.

Dies ist nicht erforderlich und hat keine Auswirkungen, wenn Sie beispielsweise bash ./script.sh schreiben oder das Skript als Quelle verwenden.

    
Mark Byers 30.09.2011 19:57
quelle
1

Sie sollten shebang in allen Skripten verwenden, insbesondere in solchen, die nicht sh-kompatible Funktionen verwenden.

In Debian ist die Standard-Shell beispielsweise ein Bindestrich (nicht bash). Wenn Sie bash-only verwenden und nicht angeben, dass dieses Skript von bash interpretiert werden soll, kann es sogar unter Linux fehlschlagen. Es wird unter Solaris oder HP-UX fast sicher ausfallen.

Wenn Ihre Datei nur Quellen von anderem Skript sein soll, dann können Sie die Shebang-Zeile weglassen, aber keine ausführbare Erlaubnis setzen. Auch für solche Dateien ist es gut, / bin / sh Kompatibilität zu halten.

Ich empfehle dringend, DashAsBinSh zu lesen.

    
Michał Šrajer 30.09.2011 20:45
quelle

Tags und Links