sh是一种POSIX标准,它有很多种实现,包括ksh88,dash,bash等。
sh
ksh88
dash
bash
因为sh是一种规范,并不是实现,所以/bin/sh实际上是一个硬链接,链接到某种实现上。
/bin/sh
大多数情况下,/bin/sh会链接到/bin/bash。所以你执行
/bin/bash
sh xx.sh
等价于执行
bash xx.sh
但是在一些系统中,/bin/sh并没有指向/bin/bash,比如在一些现代的Debian和Ubuntu系统中,sh指向的是dash。
Ref
https://stackoverflow.com/a/5725402/4902900