GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ist ein Leerzeichen zwischen #! Und /bin/bash in Shebang?

In einem Shebang ist ein Leerzeichen oder mehr zwischen #! erlaubt und der Dolmetscher?

Beispiel:#! /bin/bash . Es scheint zu funktionieren, aber einige sagten, dass es falsch ist.

Akzeptierte Antwort:

Ja, das ist erlaubt.

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

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

Nutzen Sie diese wunderbare Gelegenheit,
put

#! /bin/sh

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

Leerzeichen nach dem Shebang gibt es also schon eine ganze Weile, und in Dennis Ritchies Beispiel werden sie tatsächlich verwendet.

Beachten Sie, dass frühe Versionen von Unix eine Begrenzung von 16 Zeichen in dieser Interpreterzeile hatten, sodass Sie dort nicht beliebig viele Leerzeichen haben konnten. Diese Einschränkung gilt nicht mehr in modernen Kerneln.


Linux
  1. Unterschied zwischen /bin/false &/sbin/nologin

  2. Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0?

  3. Bash =~ Regex und Https://regex101.com/?

  4. Seltsamer Unterschied zwischen Pwd und /bin/pwd?

  5. Was ist der Unterschied zwischen /sbin/nologin und /bin/false?

Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

Warum zeigt /bin/sh auf /bin/dash und nicht auf /bin/bash?

Was ist der Unterschied zwischen /bin/false und /sbin/nologin als Shell des nologin-Benutzers?

Installieren Sie Binärdateien in /bin, /sbin, /usr/bin und /usr/sbin, Interaktionen mit --prefix und DESTDIR

/bin Inhalt nach /usr/bin verschoben, rückgängig machen möglich?

#!/bin/sh vs. #!/bin/bash für maximale Portabilität