MacOS是否更喜欢/ bin / sh或/ bin / bash?

时间:2019-10-21 18:45:39

标签: bash macos shell terminal

我希望与某人共享脚本,但不确定在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 个答案:

答案 0 :(得分:1)

您应该选择与脚本编写的外壳方言/语言相对应的shebang。

  • 如果您为POSIX sh编写,请使用#!/bin/sh

  • 如果您为Zsh编写,请使用#!/usr/bin/env zsh

  • 如果您为Fish写作,请使用#!/usr/bin/env fish

  • 如果您为Bash写作,请使用#!/usr/bin/env bash *(如果您不知道,可能就是这样)

sh大致等于bash C等于C ++,并且您应该知道要使用哪个。有关更多信息,请参见Difference between sh and bashWhy does my bash code fail when I run it with sh?


*以这种方式使用env等效于#!/bin/bash,但是还允许用户安装较新版本的Bash。特别是在macOS上的人们这样做是因为OS附带了过时的版本。

答案 1 :(得分:0)

这并不重要:这取决于该人使用脚本来确保shebang在其计算机上选择正确的解释器,因此您提供的任何内容都可能在接收端发生变化。

您所能做的就是记录执行脚本的要求。 (例如,“需要bash 4.2或更高版本。”)您可以完全省略shebang,因为您依靠用户来了解所需的解释器在哪里。

相关问题