Bash
Script shebang
Zoeken…
Syntaxis
Gebruik
/bin/bash
als de bash-interpreter:#! / Bin / bash
Zoek de bash-interpreter in de omgevingsvariabele
PATH
metenv
executable:#! / usr / bin / env bash
Opmerkingen
Een veel voorkomende fout is om te proberen Windows eind-opgemaakte \r\n
scriptbestanden op UNIX / Linux-systemen uit te voeren, in dit geval is de gebruikte scriptinterpreter in de shebang:
/bin/bash\r
En wordt onbewust niet gevonden, maar kan moeilijk te achterhalen zijn.
Directe shebang
Om een scriptbestand met de bash
interpreter uit te voeren, moet de eerste regel van een scriptbestand het absolute pad naar het te gebruiken bash
uitvoerbaar bestand aangeven:
#!/bin/bash
Het bash
pad in de shebang wordt alleen opgelost en gebruikt als een script direct als volgt wordt gestart:
./script.sh
Het script moet uitvoeringsmachtiging hebben.
De shebang wordt genegeerd wanneer een bash
interpreter expliciet wordt aangegeven om een script uit te voeren:
bash script.sh
Env shebang
Om een scriptbestand uit te voeren met het uitvoerbare bash
in de omgevingsvariabele PATH
met behulp van het uitvoerbare env
, moet de eerste regel van een scriptbestand het absolute pad naar het uitvoerbare env
aangeven met het argument bash
:
#!/usr/bin/env bash
Het env
pad in de shebang wordt alleen opgelost en gebruikt als een script direct als volgt wordt gestart:
script.sh
Het script moet uitvoeringsmachtiging hebben.
De shebang wordt genegeerd wanneer een bash
interpreter expliciet wordt aangegeven om een script uit te voeren:
bash script.sh
Andere schapen
Er zijn twee soorten programma's die de kernel kent. Een binair programma wordt geïdentificeerd door de ELF-header ( E xtenable L oadable F ormat), die meestal wordt geproduceerd door een compiler. De tweede zijn scripts van welke aard dan ook.
Als een bestand op de eerste regel begint met de reeks #! dan moet de volgende string een padnaam van een interpreter zijn. Als de kernel deze regel leest, roept deze de interpreter aan met de naam van deze padnaam en geeft alle volgende woorden in deze regel als argumenten aan de interpreter. Als er geen bestand met de naam "iets" of "fout" is:
#!/bin/bash something wrong
echo "This line never gets printed"
bash probeert zijn argument "iets mis" uit te voeren dat niet bestaat. De naam van het scriptbestand wordt ook toegevoegd. Om dit duidelijk te zien, gebruikt u een 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
Sommige programma's zoals awk gebruiken deze techniek om langere scripts in een schijfbestand uit te voeren.