ten pierwszy wiersz (#!/ bin / bash or #!/ bin / sh) ma nazwę. Jest znany jako „she-bang” (shabang). Wynika to z połączenia tokenów sharp ( # ) i bang (!). Jest również nazywany sh-bang, hashbang, poundbang lub hash-pling. W informatyce, she-bang to sekwencja znaków składająca się ze znaku numer i wykrzyknika (#!) na początku scenariusza.
/bin /bash VS/bin / sh
często widzieliśmy różnorodność she-bang lub nagłówka skryptu. Często zastanawiamy się, dlaczego ten konkretny skrypt używa tego konkretnego she-bang, dlaczego nie innego. W systemach uniksopodobnych mamy do wyboru wiele powłok. Powłoka jest odpowiedzialna nie tylko za małe podpowiedzi, ale także za interpretację poleceń skryptu. W ten sposób powłoka odgrywa ważną rolę szczególnie, gdy realizujemy duże i złożone logiki za pomocą warunków, rur, pętli itp.
/bin/sh jest plikiem wykonywalnym reprezentującym powłokę systemową i zwykle implementowanym jako dowiązanie symboliczne wskazujące na plik wykonywalny dla dowolnej powłoki, która jest powłoką systemową. Powłoka systemowa jest w zasadzie domyślną powłoką, której powinien używać skrypt. W ciągu ostatnich kilku lat Debian (i Ubuntu) zdecydowały się zmienić powłokę systemową z bash na dash – podobną powłokę, ale lżejszą i znacznie szybszą.
Dash jest dość dobrze kompatybilny z bashem, bazując na tym samym standardzie POSIX. Jednak nie implementuje rozszerzeń specyficznych dla bash. Standard POSIX to przenośny interfejs systemu operacyjnego, próba standaryzacji uniksopodobnych systemów operacyjnych. Mimo że powłoka systemu Ubuntu wskazuje na dash, twoja powłoka logowania jako użytkownik nadal jest bash w tym czasie.
/bin/bash jest najczęściej używaną powłoką używaną jako domyślna powłoka do logowania użytkownika systemu linux. Nazwa powłoki jest akronimem od Bourne-again shell. Bash może wykonywać zdecydowaną większość skryptów i dlatego jest szeroko stosowany, ponieważ ma więcej funkcji, jest dobrze rozwinięta i lepsza składnia.
CO TO JEST ? / DLACZEGO GO UŻYWAMY?
#!/bin/bash
echo $(date) # Will print the output of date command
touch ~/output.txt
echo "Hey there" > ~/output.txt
rozważmy bardzo prosty skrypt jak powyżej. W każdym najprostszym przypadku, jeśli przeanalizujemy skrypt powłoki, jest to nic innego jak lista poleceń przechowywanych w pliku. Zmniejsza to nasz wysiłek, aby ponownie i ponownie uruchamiać to samo zadanie lub polecenia. Jeśli więc spojrzymy na początek skryptu, pierwsza linia zaczyna się od skrótu ( # ) i wykrzyknika (!). Jak już musisz wiedzieć, że każda linia zaczynająca się od hash ( # ) jest czytana jako komentarz. Tak więc, gdy wykonujemy skrypt, pierwsza linia jest odczytywana jako komentarz, a interpreter przechodzi do drugiej linii. Ale pierwsza linia już wykonała swoją pracę.
w systemach operacyjnych typu Unix, gdy skrypt zaczynający się od she-bang (#!) jest uruchamiany jako program, program loader parsuje resztę początkowej linii skryptu jako interpreter-dyrektywę. W ten sposób program interpreter jest uruchamiany, przekazując do niego jako argument ścieżkę, która została użyta początkowo przez skrypt.
Załóżmy, że dowolny skrypt zaczyna się od następującej linii:
#!/bin/sh
następnie program loader jest poinstruowany, aby używać programu /bin/sh zamiast jakiegokolwiek innego, przekazując ścieżkę skryptu jako pierwszy argument.
w prostych słowach, she-bang na czele skryptu mówi systemowi, że ten plik jest zestawem poleceń, które mają być przekazane do wskazanego interpretera poleceń. Uniksopodobne systemy operacyjne mają różne powłoki i każda z linii nagłówka skryptu wywołuje inny interpreter poleceń.
niektóre przykłady she-bang
#!/bin /sh :wykonuje skrypt za pomocą powłoki Bourne ’ a lub kompatybilnej powłoki, ze ścieżką/bin / sh
#!/ bin / bash: wykonuje skrypt przy użyciu powłoki Bash.
#!/bin / csh-f: wykonuje skrypt przy użyciu powłoki C lub kompatybilnej powłoki.
#!/ usr / bin / perl-t: wykonuje skrypt za pomocą Perla z opcją taint checks
#!/usr/bin / env python :Wykonuje skrypt za pomocą Pythona, automatycznie wyszukując ścieżkę do interpretera Pythona ze zmiennych środowiskowych
mam nadzieję, że masz lepsze pojęcie o tym, czym jest she-bang i do czego służy.