Bash Script: что делает #!/ bin / bash означает? [дубликат]



этот вопрос уже есть ответ здесь:




  • Зачем тебе нужно ставить #!/bin / bash в начале файла скрипта?

    8 ответов



в скрипте bash, что делает #!/bin/bash в 1-й строке означает ?



обновление: есть ли разница между #!/bin/bash и #!/bin/sh ?

734   3  

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

    Ничего не найдено.