Suche…


Syntax

  • Verwenden Sie /bin/bash als Bash-Interpreter:

    #! / bin / bash

  • Durchsuchen Sie den bash-Interpreter in der Umgebungsvariablen PATH mit der ausführbaren Datei env :

    #! / usr / bin / env bash

Bemerkungen

Ein häufiger Fehler ist zu versuchen , Windows End-Linie formatierte auszuführen \r\n - Skriptdateien auf UNIX / Linux - Systemen, in diesem Fall das verwendete Skript - Interpreter in dem shebang ist:

/bin/bash\r

Und wird unwissentlich nicht gefunden, kann aber schwer herauszufinden sein.

Direkte Shebang

Um eine Skriptdatei mit dem bash Interpreter auszuführen, muss die erste Zeile einer Skriptdatei den absoluten Pfad zur zu verwendenden ausführbaren bash Datei angeben:

#!/bin/bash

Der bash Pfad im Shebang wird aufgelöst und nur verwendet, wenn ein Skript direkt wie folgt gestartet wird:

./script.sh

Das Skript muss über Ausführungsberechtigung verfügen.

Der Shebang wird ignoriert, wenn ein bash Interpreter explizit angegeben wird, um ein Skript auszuführen:

bash script.sh

Env Shebang

Um eine Skriptdatei mit dem Ausführen bash ausführbaren Datei in dem gefundenen PATH - Umgebungsvariable durch den ausführbaren Datei unter Verwendung von env , die ersten Zeile einer Skriptdatei muss den absoluten Pfad zur anzuzeigen , env ausführbaren Datei mit dem Argumente bash :

#!/usr/bin/env bash

Der env Pfad im Shebang wird aufgelöst und nur verwendet, wenn ein Skript direkt wie folgt gestartet wird:

script.sh

Das Skript muss über Ausführungsberechtigung verfügen.

Der Shebang wird ignoriert, wenn ein bash Interpreter explizit angegeben wird, um ein Skript auszuführen:

bash script.sh

Andere Shebangs

Es gibt zwei Arten von Programmen, die der Kernel kennt. Ein binäres Programm wird durch seinen ELF-Header ( E xtenable L oadable F ormat) identifiziert, der normalerweise von einem Compiler erzeugt wird. Das zweite sind Skripte jeglicher Art.

Wenn eine Datei in der ersten Zeile mit der Sequenz # beginnt ! dann muss die nächste Zeichenfolge ein Pfadname eines Interpreters sein. Wenn der Kernel diese Zeile liest, ruft er den mit diesem Pfadnamen benannten Interpreter auf und übergibt dem Interpreter alle folgenden Wörter in dieser Zeile als Argumente. Wenn es keine Datei mit dem Namen "etwas" oder "falsch" gibt:

#!/bin/bash something wrong
echo "This line never gets printed"

bash versucht, sein Argument "etwas Falsches" auszuführen, das nicht existiert. Der Name der Skriptdatei wird ebenfalls hinzugefügt. Um dies klar zu sehen, verwenden Sie ein Echo Shebang:

#"/bin/echo something wrong 
# and now call this script named "thisscript" like so:
# thisscript one two
# the output will be:
something wrong ./thisscript one two

Einige Programme wie awk verwenden diese Technik, um längere Skripts auszuführen, die sich in einer Festplattendatei befinden.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow