POSIX shell 脚本 shebang #!/bin/sh vs #!/usr/bin/env sh,有什么区别?

Lin*_*eak 10 shell posix shebang

我最近注意到许多脚本/usr/bin/env在他们的shebang中使用。我已经看到主要使用BashPython,但迄今为止从未与POSIX sh ( ash, dash,... )结合使用。

我想知道为什么,如果我的本意是高度可移植的POSIX shell 脚本可能会从这种env方法中受益?


关于是否使用:是否存在普遍共识:


让我足够强调这一点:

我从来没有见过这个sh

小智 15

设置为#!/bin/sh将直接转到该文件/bin/sh

设置为#!/usr/bin/env sh/usr/bin/env使用参数执行sh。这将导致脚本sh在您的PATH变量中执行, 而不是显式地使用/bin/sh.