GNU/Linux >> Linux Esercitazione >  >> Linux

È consentito lo spazio tra #! E /bin/bash a Shebang?

In uno shebang, è consentito uno spazio o più tra #! e l'interprete?

Ad esempio, #! /bin/bash . Sembra funzionare, ma alcuni hanno detto che non è corretto.

Risposta accettata:

Sì, è consentito.

L'articolo di Wikipedia sullo shebang include un'e-mail del 1980 di Dennis Ritchie, quando stava introducendo il supporto del kernel per lo shebang (come parte di un pacchetto più ampio chiamato direttive interpreti ) nella versione 8 Unix (enfasi mia):

Il sistema è stato modificato in modo che se un file in esecuzione
inizia con i caratteri magici #! , il resto della riga è inteso
come il nome di un interprete per il file eseguito. […]

Per sfruttare questa meravigliosa opportunità,
put

#! /bin/sh

al margine sinistro della prima riga dei tuoi script di shell. Spazi vuoti dopo ! sono OK.

Quindi gli spazi dopo lo shebang esistono da un po' di tempo e, in effetti, l'esempio di Dennis Ritchie li sta usando.

Nota che le prime versioni di Unix avevano un limite di 16 caratteri in questa riga dell'interprete, quindi non potresti avere una quantità arbitraria di spazi bianchi lì. Questa restrizione non si applica più nei kernel moderni.


Linux
  1. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  2. Linux:differenza tra /dev/console , /dev/tty e /dev/tty0?

  3. Strana differenza tra Pwd e /bin/pwd?

  4. Qual è il motivo per cui uno Shebang punta a /bin/sh piuttosto che a /bin/bash?

  5. Linux – Unire /usr/bin e /usr/sbin in /bin (gnu/linux)?

Qual è la differenza tra #!/usr/bin/env bash e #!/usr/bin/bash?

Quando dovrei usare /dev/shm/ e quando dovrei usare /tmp/?

Quando devo usare #!/bin/bash e quando #!/bin/sh?

Differenza tra /bin e /usr/bin

Qual è la differenza tra /tmp e /run?

#!/bin/sh vs #!/bin/bash per la massima portabilità