GNU/Linux >> Tutoriels Linux >  >> Linux

L'espace est-il autorisé entre # ! Et /bin/bash à Shebang ?

Dans un shebang, un espace ou plus est-il autorisé entre #! et l'interprète ?

Par exemple, #! /bin/bash . Cela semble fonctionner, mais certains ont dit que c'était incorrect.

Réponse acceptée :

Oui, c'est autorisé.

L'article de Wikipedia sur le shebang comprend un e-mail de 1980 de Dennis Ritchie, lorsqu'il introduisait la prise en charge du noyau pour le shebang (dans le cadre d'un package plus large appelé directives d'interprétation ) dans la version 8 d'Unix (c'est moi qui souligne) :

Le système a été modifié de sorte que si un fichier en cours d'exécution
commence par les caractères magiques #! , le reste de la ligne est compris
comme le nom d'un interpréteur pour le fichier exécuté. […]

Pour profiter de cette merveilleuse opportunité,
mettez

#! /bin/sh

à la marge gauche de la première ligne de vos scripts shell. Vides après ! sont OK.

Ainsi, les espaces après le shebang existent depuis un certain temps, et en effet, l'exemple de Dennis Ritchie les utilise.

Notez que les premières versions d'Unix avaient une limite de 16 caractères dans cette ligne d'interpréteur, vous ne pouviez donc pas y avoir une quantité arbitraire d'espaces blancs. Cette restriction ne s'applique plus dans les noyaux modernes.


Linux
  1. Différence entre /bin/false et /sbin/nologin

  2. Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

  3. Quelle est la différence entre /sbin/nologin et /bin/false ?

  4. Pourquoi /bin/sh pointe-t-il vers /bin/dash et non /bin/bash ? ?

  5. Quelle est la différence entre /bin/false et /sbin/nologin en tant que shell de l'utilisateur nologin

Aucune raison d'avoir un Shebang pointant vers /bin/sh plutôt que /bin/bash ?

Linux – Fusionner /usr/bin et /usr/sbin dans /bin (gnu/linux) ?

Quand dois-je utiliser #!/bin/bash et quand #!/bin/sh ?

Différence entre /bin et /usr/bin

Quelle est la différence entre /tmp et /run ?

Déplacement du contenu de /bin vers /usr/bin, possible d'annuler ?