Wenn Sie Bash-Skripting lernen, indem Sie den Code anderer Leute lesen, haben Sie vielleicht bemerkt, dass die erste Zeile in den Skripten mit dem #!
beginnt Zeichen und den Pfad zum Bash-Interpreter.
Diese Zeichenfolge (#!
) heißt shebang und wird verwendet, um dem Betriebssystem mitzuteilen, welcher Interpreter verwendet werden soll, um den Rest der Datei zu analysieren.
Shebang-Dolmetscherrichtlinie Nr.
Die Shebang-Interpreter-Direktive hat folgende Form:
#!interpreter [arguments]
- Die Direktive muss die erste Zeile im Skript sein.
- Die Direktive muss mit shebang
#!
beginnen - Leerraum nach den Shebang-Zeichen ist optional.
- Interpreter ist der vollständige Pfad zu einer Binärdatei (z. B.:
/bin/sh
,/bin/bash
). - Interpreter-Argumente sind optional.
Beispiele:
#!/bin/bash
- Verwendetbash
um die Datei zu parsen.#!/usr/bin/env perl
- Verwendet dieenv
Befehl, um den Pfad zuperl
zu finden ausführbar.#!/usr/bin/python
Führt die Datei mitpython
aus binär.
Shebang in Bash-Skripten verwenden #
Wenn kein Shebang angegeben ist und der Benutzer, der das Bash-Skript ausführt, eine andere Shell verwendet, wird das Skript von dem von dieser Shell verwendeten Standardinterpreter analysiert. Beispielsweise der Standardinterpreter für bash
ist bash
und für zsh
ist sh
. Um sicherzustellen, dass Ihr Skript immer mit Bash interpretiert wird, müssen Sie den ausführbaren Pfad mit Shebang angeben.
Es gibt zwei Möglichkeiten, die Shebang-Direktive zu verwenden und den Interpreter einzustellen.
-
Verwendung des absoluten Pfads zur Bash-Binärdatei:
#!/bin/bash
-
Verwenden der
env
Dienstprogramm:#!/usr/bin/env bash
Der Vorteil des zweiten Ansatzes besteht darin, dass nach bash
gesucht wird ausführbar im $PATH
des Benutzers Umgebungsvariable. Wenn es mehr als einen Pfad zu bash
gibt , der erste wird vom Skript verwendet.
Wenn Sie die erste Option verwenden, um eine Option zum Bash-Shell-Angebot hinzuzufügen, übergeben Sie sie an den Interpreter. Um das Skript beispielsweise im Debug-Modus auszuführen, würden Sie #!/bin/bash -x
verwenden .Wenn Sie die env
verwenden Methode, dann müssen Sie set
verwenden Option zu erklären. Um den Debug-Modus zu aktivieren, würden Sie set -x
hinzufügen nach der Shebang-Linie.
Beispielskript #
Lassen Sie uns ein einfaches Skript mit Shebang erstellen, das „Hello, World“ ausgibt. Öffnen Sie Ihren Texteditor und fügen Sie die folgende Zeile ein:
nano hello_world
hello_world#!/bin/bash
echo "Hello, World"
Um das Skript ausführen zu können, ohne den Interpreter von der Befehlszeile aus anzugeben, müssen Sie die Datei ausführbar machen:
chmod +x hello_world
Jetzt können Sie das Skript ausführen, indem Sie ./
eingeben gefolgt vom Skriptnamen:
./hello_world
Hello, World
Überschreiben des Shebang #
Wenn Sie aus irgendeinem Grund den in der Shebang-Zeile gesetzten Interpreter überschreiben möchten, müssen Sie das Skript ausführen, indem Sie explizit die gewünschte Shell angeben.
Zum Beispiel, um ein Skript auszuführen, das #!/bin/sh
hat in der Shebang-Zeile mit bash
angegeben Shell würden Sie Folgendes eingeben:
bash hello_world
Bitte beachten Sie, dass es keine gute Idee ist, den Shell-Interpreter zu überschreiben, da dies zu unerwartetem Verhalten des Skripts führen kann.
Schlussfolgerung #
Inzwischen sollten Sie gut verstehen, was Shebang ist und wie Sie es in Ihren Bash-Skripten verwenden.
Wenn Sie Fragen oder Feedback haben, können Sie gerne einen Kommentar hinterlassen.