Linux оболочка странная ситуация - PullRequest
2 голосов
/ 26 июля 2010

Кто-нибудь знает, почему работает следующий скрипт?

#a-random-junk-string
echo HI

Оболочка выполняет команду echo и выдает HI.Я думал, что, поскольку нет "!"после "#" оболочка выдаст ошибку.

Ответы [ 2 ]

12 голосов
/ 26 июля 2010

Если нет #! при указании конкретного интерпретатора ядро ​​ не будет перехватывать и запускать его с указанной программой.

Однако, текущая оболочка все еще может интерпретировать его как командный файл, который, как вы видите, имеет место.

1 голос
/ 26 июля 2010

Когда оболочку просят запустить файл с включенным исполняемым битом, она проверяет файл и определяет, начинается ли он с символа #!если это произойдет, то она выполнит эту команду, которая получит текст своей программы из оставшейся части файла.

Если файл не начинается с шебанга, то оболочка попытается выполнить его сама.Это то, что происходит для вас, и оболочка интерпретирует первую строку как комментарий.

...