3 ответов:
, который называется shebang, он сообщает оболочке, с какой программой интерпретировать скрипт при выполнении.
в вашем примере скрипт должен быть интерпретирован и запущен Баш оболочки.
некоторые другие примеры shebangs являются:
(Из Википедии)
#!/bin/sh — Execute the file using sh, the Bourne shell, or a compatible shell #!/bin/csh — Execute the file using csh, the C shell, or a compatible shell #!/usr/bin/perl -T — Execute using Perl with the option for taint checks #!/usr/bin/php — Execute the file using the PHP command line interpreter #!/usr/bin/python -O — Execute using Python with optimizations to code #!/usr/bin/ruby — Execute using Rubyи несколько дополнительных, которые я могу придумать с головы, например:
#!/bin/ksh #!/bin/awk #!/bin/expectв скрипте с Баш shebang, для например, вы бы написали свой код с синтаксисом bash; тогда как в скрипте с expect shebang вы бы закодировали его в синтаксисе expect и так далее.
ответ на обновленной части:
это зависит от того, что
/bin/shфактически указывает на вашу систему. Часто это просто символическая ссылка на/bin/bash. Иногда переносимые скрипты пишутся с помощью#!/bin/shпросто чтобы показать, что это сценарий оболочки, но он использует любую оболочку, на которую ссылается/bin/shна этом конкретном система (может быть, это указывает на/bin/bash,/bin/kshили/bin/zsh)
в скрипте bash, что делает #!/bin / bash в 1-й строке означает ?
в системе Linux у нас есть оболочка, которая интерпретирует наши команды UNIX. Теперь есть ряд оболочек в системе Unix. Среди них есть оболочка под названием bash, которая очень распространена в Linux и имеет долгую историю. Это оболочка по умолчанию в Linux.
при написании скрипта (набор команд unix и так далее) у вас есть возможность указать, в какой оболочке он может быть использован. Как правило, вы можете указать, какая оболочка это будет с помощью Shebang(Да вот как это называется).
Так что если вы #!/bin/bash в верхней части ваших сценариев, то вы говорите вашей системе, чтобы использовать bash в качестве оболочки по умолчанию.
теперь перейдем к вашему второму вопросу: есть ли разница между #!/ bin / bash и #!/ bin / sh ?
ответ-да. Когда вы говорите #!/bin/bash тогда вы говорите своей среде / ОС использовать bash в качестве команды переводчик. Это жестко закодированная вещь.
каждая система имеет свою собственную оболочку, которую система будет использовать для выполнения своих собственных системных сценариев. Эта системная оболочка может варьироваться от ОС к ОС(большую часть времени это будет bash. Ubuntu в последнее время с помощью тире как системная оболочка по умолчанию). Когда вы указываете #!/bin / sh тогда система будет использовать свою внутреннюю системную оболочку для интерпретации ваших сценариев оболочки.
посетить этот ссылке для получения дополнительной информации, где я объяснил эту тему.
надеюсь, что это устранит ваши путаницы...удача.
когда первые символы в скрипте
#!, который называется shebang. Если файл начинается с#!/path/to/somethingстандарт должен работатьsomethingи передать остальную часть файла в эту программу в качестве входных данных.С учетом сказанного, разница между
#!/bin/bash,#!/bin/sh, или даже#!/bin/zshиспользуются ли программы bash, sh или zsh для интерпретации остальной части файла.bashиshпросто разные программы, традиционно. На некоторых Linux системы они представляют собой две копии одной и той же программы. В других системах Linux,shссылкаdash, и на традиционных системах Unix (Solaris, Irix и др.)bashобычно это совершенно другая программа отsh.конечно, остальная часть линии не должна заканчиваться на sh. С таким же успехом это может быть
#!/usr/bin/python,#!/usr/bin/perl, или даже#!/usr/local/bin/my_own_scripting_language.
Comments