Intereting Posts
Как использовать `lsh` в качестве клиента для сервера OpenSSHD без пароля? «Tail -f» показывает старый файл после того, как файл был повернут Как навсегда переделать кепку в esc в X11? Изменение suEXEC Path / CentOS 6 как сохранить yum от обновления файла, который я изменил? Как работает параметр «-f» команды «хвост»? Система выключается, даже если присутствует ингибитор Почему у Vim разные позиции курсора для разных режимов? Оболочка U-Boot – использование памяти памяти (например, бесплатная Linux-команда) В чем разница между UNIX и UNIX? Как aptitude в Debian 9 позволяет мелкозернистую очистку нового списка пакетов? Использование памяти процесса непосредственно перед выполнением его первой инструкции ls: уточнить: файл или папку Почему сначала установить переменную, а затем экспортировать ее вместо настройки и экспорта в одной команде? Почему iotop не показывает некоторые процессы с высоким дисковым вводом-выводом? А какой инструмент будет?

В чем разница в этих двух средах bash?

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

Может ли кто-то упростить разницу между этими двумя? Я все время использую #!/bin/bash .

 #!/bin/bash #!/usr/bin/env bash 

#!/usr/bin/env bash приводит к скрипту, используя любой bash, который сначала находится в $PATH .

Хотя для bash обычно находится в /bin/bash . Бывают случаи, когда это не (разные операционные системы). Другое потенциальное использование – это когда установлено несколько оболочек bash (более новая версия в альтернативном месте, например /usr/local/bin/bash ).

Выполнение #!/usr/bin/env bash просто использует поведение утилиты env .
Утилита env обычно используется для управления средой при вызове программы (например, env -i someprog для очистки среды). Однако, не предоставляя никаких аргументов, кроме исполняемой программы, это приводит к выполнению указанной программы, как указано в $PATH .


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

Преимущества, как упоминалось ранее, в том, что он делает сценарий переносимым, если bash установлен в другом месте, или если /bin/bash слишком стар, чтобы поддерживать то, что пытается выполнить скрипт.

Недостатком является то, что вы можете получить непредсказуемое поведение. Поскольку вы находитесь во власти $PATH , это может привести к запуску скрипта с версией bash, которая отличается по сравнению с тем, что ожидает сценарий.