Darf zwischen #! und / bin / bash in shebang?

48

Ist bei einem Schebang ein Leerzeichen oder mehr zwischen #!und dem Dolmetscher erlaubt ?

Zum Beispiel #! /bin/bash. Es scheint Arbeit, aber einige sagten, dass es falsch ist.

Tim
quelle
Ein Leerzeichen ist also nicht nötig ? Ich habe immer mindestens einen gesehen ...
Bakuriu
6
@ Bakuriu Wo? Ich habe fast nie einen gesehen ...
Jens

Antworten:

48

Ja, das ist erlaubt.

Der Wikipedia-Artikel über den Shebang enthält eine E-Mail von Dennis Ritchie aus dem Jahr 1980, als er die Kernel-Unterstützung für den Shebang (als Teil eines umfassenderen Pakets namens Interpreter-Direktiven ) in Version 8 Unix einführte (Hervorhebung von mir):

Das System wurde dahingehend geändert, dass, wenn eine ausgeführte Datei mit den magischen Zeichen beginnt #!, der Rest der Zeile als Name eines Interpreters für die ausgeführte Datei verstanden wird. […]

Um diese wunderbare Gelegenheit zu nutzen, setzen Sie

#! /bin/sh

am linken Rand der ersten Zeile Ihrer Shell-Skripte. Leerzeichen nach !sind OK.

Räume nach dem Schebang gibt es also schon eine ganze Weile, und Dennis Ritchies Beispiel verwendet sie tatsächlich.

Beachten Sie, dass in früheren Versionen von Unix die Anzahl der Zeichen in dieser Interpreterzeile auf 16 begrenzt war, sodass dort keine willkürliche Anzahl von Leerzeichen angegeben werden konnte. Diese Einschränkung gilt nicht mehr für moderne Kernel.

alexwlchan
quelle
38

Ja, Leerzeichen sind nach dem erlaubt #!. Es gab sogar den (falschen) Gedanken, dass einige Systeme dies erfordern könnten, aber es war immer nur optional.

Zum weiterlesen hier probieren

Eric Renouf
quelle