Czy miejsce jest dozwolone między #! i / bin / bash w shebang?

48

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.

Tim
źródło
Więc miejsce nie jest konieczne ? Zawsze widziałem przynajmniej jeden ...
Bakuriu 16.04.16
6
@Bakuriu Gdzie? Prawie nigdy nie widziałem ...
Jens

Odpowiedzi:

48

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.

alexwlchan
źródło
38

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

Eric Renouf
źródło