MacOS предпочитает / bin / sh или / bin / bash? - PullRequest
0 голосов
/ 21 октября 2019

Я хочу поделиться сценарием с кем-то, но не уверен, какой из них предпочтителен для MacOS. Что лучше всего поддерживается?

Это?

#!/bin/sh
echo "Here goes my simple script that changes some settings."
# ... do some stuff

Или это?

#!/bin/bash
echo "Here goes my simple script that changes some settings."
# ... do some stuff

Ответы [ 2 ]

1 голос
/ 22 октября 2019

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

  • Если вы пишете для POSIX sh, используйте #!/bin/sh

  • Если вы пишете для Zsh, используйте #!/usr/bin/env zsh

  • Если вы пишете для Fish, используйте #!/usr/bin/env fish

  • Если вы пишете для Bash, используйте #!/usr/bin/env bash* (если вы не знаете, возможно, это так)

sh равно bash примерно то же, что C для C ++и вы должны знать, какой из них вы хотите использовать. Для получения дополнительной информации см. Разница между sh и bash и Почему мой bash-код не работает, когда я запускаю его с sh?


* Использование envэтот способ эквивалентен #!/bin/bash, но также позволяет пользователю установить более новую версию Bash. В частности, люди, работающие в macOS, делают это, потому что ОС поставляется с устаревшей версией.

0 голосов
/ 21 октября 2019

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

Все, что вы можете сделать, это документировать, каковы требования для выполнения вашего скрипта. (Например, «Требуется bash 4.2 или более поздняя версия».) Вы можете полностью опустить шебанг, поскольку вы полагаетесь на то, что пользователь в любом случае знает, где находится требуемый переводчик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...