Zoeken…


Syntaxis

  • Gebruik /bin/bash als de bash-interpreter:

    #! / Bin / bash

  • Zoek de bash-interpreter in de omgevingsvariabele PATH met env 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.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow