Bash
Manus shebang
Sök…
Syntax
Använd
/bin/bash
som bastolk:#! / Bin / bash
Sök bash-tolk i
PATH
miljövariabeln medenv
körbar:#! / usr / bin / env bash
Anmärkningar
Ett vanligt misstag är att försöka köra Windows slutlinje formaterade \r\n
skriptfiler på UNIX / Linux-system, i det här fallet är den använda skriptolkaren i shebang:
/bin/bash\r
Och hittas i glömska inte men kan vara svårt att räkna ut.
Direkt shebang
För att köra en skriptfil med bash
tolkaren måste den första raden i en skriptfil ange den absoluta sökvägen till den bash
köras:
#!/bin/bash
bash
banan i shebanget löses och används endast om ett skript direkt startas så här:
./script.sh
Skriptet måste ha körningstillstånd.
Shebang ignoreras när en bash
tolk uttryckligen indikeras för att köra ett skript:
bash script.sh
Env shebang
För att utföra ett skript fil med bash
körbara finns i PATH
miljövariabler med hjälp av exekverbara env
måste den första raden i en skriptfil indikerar den absoluta sökvägen till env
körbara med argumentet bash
:
#!/usr/bin/env bash
env
vägen i shebanget löses och används bara om ett skript direkt startas så här:
script.sh
Skriptet måste ha körningstillstånd.
Shebang ignoreras när en bash
tolk uttryckligen indikeras för att köra ett skript:
bash script.sh
Andra shebangs
Det finns två typer av program kärnan känner till. Ett binärt program identifieras av dess ELF ( E xtenable L oadable F ormat) -huvud, som vanligtvis produceras av en kompilator. Den andra är skript av alla slag.
Om en fil startar på den allra första raden med sekvensen #! då måste nästa sträng vara ett söknamn för en tolk. Om kärnan läser den här raden kallar den tolkens namn med detta söknamn och ger alla följande ord i den här raden som argument till tolkaren. Om det inte finns någon fil med namnet "något" eller "fel":
#!/bin/bash something wrong
echo "This line never gets printed"
bash försöker utföra sitt argument "något fel" som inte finns. Namnet på skriptfilen läggs också till. För att se detta tydligt använder du en eko 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
Vissa program som awk använder den här tekniken för att köra längre skript som finns i en diskfil.