Как правило использование env
является более портативным. Это маловероятно, но теоретически мыслимо для нахождения системы, которая не имеет никакого bash
в /bin/bash
. Также возможно, что у пользователя, выполняющего сценарий, есть их собственная версия удара, которая так или иначе отличается.
Используя env
средства, что первое bash
экземпляр в пути пользователя будет выбрано. Это означает, что #!/usr/bin/env bash
будет всегда работать с выбранной версией удара пользователя, и она должна всегда оценивать к доступному bash
даже в нестандартных системах. Это становится намного более важным при использовании другого интерпретатора не колотят. Perl, например, может быть установлен на различных местоположениях в различных системах, но env
найдет его независимо.
Так, с помощью #!/usr/bin/env PROGRAM
хорошая привычка войти, так как она делает сценарии более портативными к различному *, отклоняют версии.
Если у Вас будут serveral версии удара, установленного (возможный), то использование #!/usr/bin/env bash
гарантирует, что используемый удар является первым на Вашей среде $PATH
.
Используя #!/bin/bash
будет жесткое кодирование двоичный файл, сохраненный в #!/bin
.
Относитесь: Подобный вопрос на ТАК