Czy w shebang jest dozwolona spacja lub więcej między tłumaczem #!
a tłumaczem?
Na przykład #! /bin/bash
. Wydaje się, że działa, ale niektórzy powiedzieli, że jest niepoprawny.
Czy w shebang jest dozwolona spacja lub więcej między tłumaczem #!
a tłumaczem?
Na przykład #! /bin/bash
. Wydaje się, że działa, ale niektórzy powiedzieli, że jest niepoprawny.
Odpowiedzi:
Tak, jest to dozwolone.
Artykuł w Wikipedii na temat shebang zawiera wiadomość e-mail od Dennisa Ritchiego z 1980 roku, kiedy wprowadzał obsługę jądra dla shebang (jako część szerszego pakietu zwanego dyrektywami interpretera ) w wersji 8 Unix (wyróżnienie moje):
System został zmieniony tak, że jeśli wykonywany plik zaczyna się od magicznych znaków
#!
, reszta linii jest rozumiana jako nazwa interpretera wykonanego pliku. […]Aby skorzystać z tej wspaniałej okazji, postaw
#! /bin/sh
na lewym marginesie pierwszego wiersza skryptów powłoki. Puste pola
!
są OK.
Tak więc przestrzenie po shebangie istniały już od dłuższego czasu i rzeczywiście, przykład Dennisa Ritchiego z nich korzysta.
Zauważ, że wczesne wersje Uniksa miały limit 16 znaków w tej linii interpretera, więc nie można było tam umieścić dowolnej spacji. To ograniczenie nie ma już zastosowania w nowoczesnych jądrach.
Tak, puste są dozwolone po #!
. Była nawet (błędna) myśl, że niektóre systemy mogą tego wymagać, ale zawsze była ona opcjonalna.
Aby przeczytać więcej, spróbuj tutaj