我希望与某人共享脚本,但不确定在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
答案 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 bash和Why does my bash code fail when I run it with sh?
*以这种方式使用env
等效于#!/bin/bash
,但是还允许用户安装较新版本的Bash。特别是在macOS上的人们这样做是因为OS附带了过时的版本。
答案 1 :(得分:0)
这并不重要:这取决于该人使用脚本来确保shebang在其计算机上选择正确的解释器,因此您提供的任何内容都可能在接收端发生变化。
您所能做的就是记录执行脚本的要求。 (例如,“需要bash
4.2或更高版本。”)您可以完全省略shebang,因为您依靠用户来了解所需的解释器在哪里。