Что означает запись bin bash в начале исполняемого файла linux

Зачем нужно ставить #! / Bin / bash в начале файла сценария?

Раньше я создавал скрипты Bash, и все они отлично работали без #!/bin/bash в начале.

Какой смысл вставлять? Было бы все иначе?

10 ответов

Это соглашение, поэтому оболочка * nix знает, какой интерпретатор запускать.

Например, в старых версиях ATT по умолчанию использовалась sh (оболочка Bourne), а в более старых версиях BSD по умолчанию использовалась csh (оболочка C).

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

Это может быть полезно для тех, кто использует другую систему, в которой эта библиотека недоступна. Если это не объявлено, и в вашем скрипте есть некоторые функции, которые не поддерживаются этой системой, вам следует объявить # / bin / bash. Я сталкивался с этой проблемой раньше на работе, и теперь я просто включаю ее в качестве практики.

Bash часто является оболочкой по умолчанию в большинстве дистрибутивов Linux. Вот почему bash является синонимом оболочки.

Сценарии оболочки часто имеют почти одинаковый синтаксис, но иногда они различаются. Например, индекс массива начинается с 1 в Zsh вместо 0 в bash. Сценарий, написанный для оболочки Zsh, не будет работать так же в bash, если в нем есть массивы.

Чтобы избежать неприятных сюрпризов, вы должны сообщить интерпретатору, что ваш сценарий оболочки написан для оболочки bash. Как ты это делаешь?

Просто начните свой сценарий bash в #! / bin / bash

В каждом дистрибутиве есть оболочка по умолчанию. Bash используется по умолчанию в большинстве систем. Если вы работаете в системе с другой оболочкой по умолчанию, сценарии могут работать не так, как задумано, если они написаны специально для Bash.

Добавление #!/bin/bash в качестве первой строки вашего сценария указывает операционной системе вызвать указанный shell для выполнения команд, которые следуют в сценарии.

#! часто называют «хэш-бах», «ша-бах» или «ша-бах».

Ваша точка зрения на то, что он «работает» даже без shebang, заключается только в том, что рассматриваемая программа является сценарием оболочки, написанным для той же оболочки, что и та, которую вы используете. Например, вы могли бы очень хорошо написать файл javascript, а затем поместить #! /usr/bin/js (или что-то подобное), чтобы получить «сценарий оболочки» javascript.

Операционная система использует оболочку по умолчанию для запуска вашего сценария оболочки. поэтому, упоминая путь к оболочке в начале скрипта, вы просите ОС использовать эту конкретную оболочку. Это также полезно для переносимости.

Источник

В чем разница между #! / Bin / sh и #! / Bin / bash?

В Linux и других Unix-подобных системах у вас есть выбор из нескольких оболочек.

Оболочка отвечает не только за вывод вашей маленькой подсказки, но и за интерпретацию ваших команд, особенно если вы используете сложную логику, такую ​​как конвейеры, условные выражения и так далее.

В наши дни он запускается из /bin/bash любой системы с bash.

Оболочки используют не только пользователи. Сценарии ( сценарии оболочки ) нуждаются в оболочках для их интерпретации. Когда вы запускаете сценарий оболочки, ваша система должна запустить процесс оболочки, чтобы выполнить ваш сценарий.

Проблема в том, что разные оболочки имеют крошечные несоответствия между ними, и когда дело доходит до запуска скриптов, это может быть реальной проблемой. В bash достаточно много скриптовых функций, которые уникальны только для bash, а не для других оболочек. Это нормально, если вы всегда собираетесь использовать bash для запуска этих скриптов. Другие оболочки могут пытаться либо эмулировать bash, либо придерживаться стандарта POSIX, который bash поддерживает довольно хорошо (хотя добавляет свои собственные расширения).

В верхней части сценария оболочки можно указать, какую оболочку следует запускать с использованием шебанга. Скрипт может указывать #!/bin/bash в первой строке, что означает, что скрипт всегда должен запускаться с bash, а не с другой оболочкой.

Dash довольно хорошо совместим с bash, основываясь на том же стандарте POSIX. Тем не менее, он не реализует специфичные для bash расширения. Существуют сценарии, которые используют #!/bin/sh (системную оболочку) в качестве своего шебанга, но для которых нужны специфичные для bash расширения. В настоящее время это считается ошибкой, которая должна быть исправлена Debian и Ubuntu, которым требуется / bin / sh, чтобы иметь возможность работать при указании на dash.

Даже несмотря на то, что системная оболочка Ubuntu указывает на dash, ваша оболочка входа в систему как пользователь продолжает быть bash в это время. То есть, когда вы входите в эмулятор терминала в любом месте Linux, ваша оболочка входа будет bash. Скорость работы не является большой проблемой, когда оболочка используется в интерактивном режиме, и пользователи знакомы с bash (и могут иметь специфичные для bash настройки в своем домашнем каталоге).

Что вы должны использовать при написании скриптов

Источник

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

Я сделал Баш скрипты раньше, и все они работали нормально без этого в начале. Какой смысл в этом? Будет ли все по-другому?

8 ответов

это соглашение, поэтому оболочка *nix знает, какой интерпретатор запускать.

например, старые ароматы ATT по умолчанию ш (оболочка Борна), в то время как более старые версии BSD по умолчанию csh (оболочка C).

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

ваша точка зрения об этом «работает» даже без shebang только потому, что программа, о которой идет речь, является сценарием оболочки, написанным для той же оболочки, что и та, которую вы используете. Например, вы можете очень хорошо написать файл javascript, а затем поставить #! /usr/bin/js (или что-то подобное), чтобы иметь оболочку javascript сценарий.»

операционная система принимает оболочку по умолчанию для запуска сценария оболочки. поэтому, упоминая путь оболочки в начале скрипта, вы просите ОС использовать эту конкретную оболочку. Это также полезно для мобильность.

каждый дистрибутив имеет оболочку по умолчанию. Bash является значением по умолчанию для большинства систем. Если вы работаете в системе с другой оболочкой по умолчанию, сценарии могут работать не так, как предполагалось, если они написаны специально для Bash.

добавлять #!/bin/bash как первая строка вашего скрипта, сообщает ОС, чтобы вызвать указанный shell для выполнения следующих команд сценарий.

#! часто называют «хэш-Банг», «она-Банг»или» Ша-Банг».

Это называется shebang. Он состоит из знака и восклицательного знака (#!), за которым следует полный путь к интерпретатору, например /bin / bash. Все скрипты под UNIX и Linux выполняются с помощью интерпретатора, указанного в первой строке.

Это может быть полезно для тех, кто использует другую систему, которая не имеет эту библиотеку легко доступны. Если это не объявлено, и у вас есть некоторые функции в скрипте, которые не поддерживаются этой системой, вы должны объявить #/bin/bash. Я столкнулся с этой проблемой раньше на работе, и теперь я просто включаю ее в качестве практики.

Источник

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

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

3 ответов:

, который называется shebang, он сообщает оболочке, с какой программой интерпретировать скрипт при выполнении.

в вашем примере скрипт должен быть интерпретирован и запущен Баш оболочки.

некоторые другие примеры shebangs являются:

и несколько дополнительных, которые я могу придумать с головы, например:

в скрипте с Баш shebang, для например, вы бы написали свой код с синтаксисом bash; тогда как в скрипте с expect shebang вы бы закодировали его в синтаксисе expect и так далее.

ответ на обновленной части:

в системе Linux у нас есть оболочка, которая интерпретирует наши команды UNIX. Теперь есть ряд оболочек в системе Unix. Среди них есть оболочка под названием bash, которая очень распространена в Linux и имеет долгую историю. Это оболочка по умолчанию в Linux.

при написании скрипта (набор команд unix и так далее) у вас есть возможность указать, в какой оболочке он может быть использован. Как правило, вы можете указать, какая оболочка это будет с помощью Shebang(Да вот как это называется).

Так что если вы #!/bin/bash в верхней части ваших сценариев, то вы говорите вашей системе, чтобы использовать bash в качестве оболочки по умолчанию.

ответ-да. Когда вы говорите #!/bin/bash тогда вы говорите своей среде / ОС использовать bash в качестве команды переводчик. Это жестко закодированная вещь.

каждая система имеет свою собственную оболочку, которую система будет использовать для выполнения своих собственных системных сценариев. Эта системная оболочка может варьироваться от ОС к ОС(большую часть времени это будет bash. Ubuntu в последнее время с помощью тире как системная оболочка по умолчанию). Когда вы указываете #!/bin / sh тогда система будет использовать свою внутреннюю системную оболочку для интерпретации ваших сценариев оболочки.

посетить этот ссылке для получения дополнительной информации, где я объяснил эту тему.

надеюсь, что это устранит ваши путаницы. удача.

Источник

Bash Script : what does #!/bin/bash mean? [duplicate]

3 Answers 3

That is called a shebang, it tells the shell what program to interpret the script with, when executed.

In your example, the script is to be interpreted and run by the bash shell.

Some other example shebangs are:

and a few additional ones I can think off the top of my head, such as:

In a script with the bash shebang, for example, you would write your code with bash syntax; whereas in a script with expect shebang, you would code it in expect syntax, and so on.

Response to updated portion:

In Linux system, we have shell which interprets our UNIX commands. Now there are a number of shell in Unix system. Among them, there is a shell called bash which is very very common Linux and it has a long history. This is a by default shell in Linux.

When you write a script (collection of unix commands and so on) you have a option to specify which shell it can be used. Generally you can specify which shell it wold be by using Shebang(Yes that’s what it’s name).

So if you #!/bin/bash in the top of your scripts then you are telling your system to use bash as a default shell.

The answer is Yes. When you tell #!/bin/bash then you are telling your environment/ os to use bash as a command interpreter. This is hard coded thing.

Every system has its own shell which the system will use to execute its own system scripts. This system shell can be vary from OS to OS(most of the time it will be bash. Ubuntu recently using dash as default system shell). When you specify #!/bin/sh then system will use it’s internal system shell to interpreting your shell scripts.

Visit this link for further information where I have explained this topic.

Hope this will eliminate your confusions. good luck.

Источник

Понравилась статья? Поделиться с друзьями:

Не пропустите наши новые статьи:

  • Что означает задание печати находится в очереди печати windows
  • Что означает е7 на мультиварке редмонд программе жарка
  • Что означает доллар в shell linux
  • Что означает джокер в программе три аккорда
  • Что означает деинсталлировать программу

  • Операционные системы и программное обеспечение
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии