Bash
Skrypt shebang
Szukaj…
Składnia
Użyj
/bin/bash
jako interpretera bash:#! / bin / bash
Wyszukaj interpreter bash w zmiennej środowiskowej
PATH
pomocą pliku wykonywalnegoenv
:#! / usr / bin / env bash
Uwagi
Częstym błędem jest próba wykonania plików skryptowych w formacie \r\n
sformatowanym na końcu systemu Windows w systemach UNIX / Linux, w tym przypadku używany interpreter skryptów w shebang to:
/bin/bash\r
I nie wiadomo, że nie został znaleziony, ale może być trudny do zrozumienia.
Bezpośredni shebang
Aby wykonać plik skryptu za pomocą interpretera bash
, pierwszy wiersz pliku skryptu musi wskazywać bezwzględną ścieżkę do pliku wykonywalnego bash
należy użyć:
#!/bin/bash
Ścieżka bash
w shebang jest rozwiązana i używana tylko wtedy, gdy skrypt jest uruchamiany bezpośrednio w następujący sposób:
./script.sh
Skrypt musi mieć uprawnienia do wykonywania.
Shebang jest ignorowany, gdy interpreter bash
jest wyraźnie wskazany do wykonania skryptu:
bash script.sh
Env shebang
Aby wykonać plik skryptu z plikiem wykonywalnym bash
znalezionym w zmiennej środowiskowej PATH
przy użyciu pliku wykonywalnego env
, pierwszy wiersz pliku skryptowego musi wskazywać bezwzględną ścieżkę do pliku wykonywalnego env
za pomocą argumentu bash
:
#!/usr/bin/env bash
Ścieżka env
w shebang jest rozwiązana i używana tylko wtedy, gdy skrypt jest uruchamiany bezpośrednio w następujący sposób:
script.sh
Skrypt musi mieć uprawnienia do wykonywania.
Shebang jest ignorowany, gdy interpreter bash
jest wyraźnie wskazany do wykonania skryptu:
bash script.sh
Inne shebangi
Istnieją dwa rodzaje programów, o których jądro wie. Program binarny jest identyfikowany przez nagłówek ELF ( E xtenable L oadable F ormat), który jest zwykle wytwarzany przez kompilator. Drugi to wszelkiego rodzaju skrypty.
Jeśli plik zaczyna się w pierwszej linii z sekwencją #! następnie następnym ciągiem musi być nazwa ścieżki tłumacza. Jeśli jądro odczytuje ten wiersz, wywołuje interpreter nazwany tą nazwą ścieżki i przekazuje wszystkie następujące słowa w tym wierszu jako argumenty dla interpretera. Jeśli nie ma pliku o nazwie „coś” lub „źle”:
#!/bin/bash something wrong
echo "This line never gets printed"
bash próbuje wykonać swój argument „coś złego”, co nie istnieje. Dodano także nazwę pliku skryptu. Aby to wyraźnie zobaczyć, użyj shebang echa :
#"/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
Niektóre programy, takie jak awk, używają tej techniki do uruchamiania dłuższych skryptów znajdujących się w pliku dyskowym.