GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bash Shebang

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 - Verwendet bash um die Datei zu parsen.
  • #!/usr/bin/env perl - Verwendet die env Befehl, um den Pfad zu perl zu finden ausführbar.
  • #!/usr/bin/python Führt die Datei mit python 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.

  1. Verwendung des absoluten Pfads zur Bash-Binärdatei:

    #!/bin/bash
  2. 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.


Linux
  1. Bash-Scripting(I)

  2. Welcher Shell-Interpreter führt ein Skript ohne Shebang aus?

  3. Mehrere Argumente in Shebang?

  4. Bash sortieren

  5. Was macht das -e in einem Bash-Shebang?

Bash bis Loop

Bash-Case-Statement

Bash if..else-Anweisung

Bash-Arrays

Bash-printf-Befehl

Assoziatives Array in Bash