Bash
Skript Shebang
Suche…
Syntax
Verwenden Sie
/bin/bash
als Bash-Interpreter:#! / bin / bash
Durchsuchen Sie den bash-Interpreter in der Umgebungsvariablen
PATH
mit der ausführbaren Dateienv
:#! / 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.