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- Verwendetbashum die Datei zu parsen.#!/usr/bin/env perl- Verwendet dieenvBefehl, um den Pfad zuperlzu finden ausführbar.#!/usr/bin/pythonFührt die Datei mitpythonaus 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
envDienstprogramm:#!/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.