Разрешено ли пространство между #! и / bin / bash в Шебанге?

48

В шебанге разрешено пространство или больше между #!переводчиком?

Например, #! /bin/bash. Вроде работа, но некоторые говорили, что это неправильно.

Тим
источник
Так что пробел не нужен ? Я всегда видел, по крайней мере, один ...
Бакуриу
6
@Bakuriu Где? Я почти никогда не видел ни одного ...
Jens

Ответы:

48

Да, это разрешено

Статья Википедии о shebang включает электронное письмо 1980 года от Денниса Ритчи, когда он представлял поддержку ядра для shebang (как часть более широкого пакета, называемого директивами интерпретатора ) в Unix версии 8 (выделено мое):

Система была изменена таким образом, что, если исполняемый файл начинается с магических символов #!, остальная часть строки понимается как имя интерпретатора исполняемого файла. [...]

Чтобы воспользоваться этой замечательной возможностью,

#! /bin/sh

на левом поле первой строки ваших сценариев оболочки. Пробелы после !в порядке.

Так что места после Шебанга были вокруг довольно долгое время, и, действительно, пример Денниса Ричи использует их.

Обратите внимание, что ранние версии Unix имели ограничение в 16 символов в этой строке интерпретатора, поэтому у вас не могло быть произвольного количества пробелов. Это ограничение больше не применяется в современных ядрах.

alexwlchan
источник
38

Да, пробелы разрешены после #!. Была даже (ошибочная) мысль, что некоторым системам это может потребоваться, но это всегда было необязательно.

Для дальнейшего чтения попробуйте здесь

Эрик Ренуф
источник