Szukaj…


Składnia

  • Użyj /bin/bash jako interpretera bash:

    #! / bin / bash

  • Wyszukaj interpreter bash w zmiennej środowiskowej PATH pomocą pliku wykonywalnego env :

    #! / 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.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow