我在很多地方都看到过,包括这个网站上的推荐(什么是首选的 Bash shebang?),#!/usr/bin/env bash优先使用#!/bin/bash. 我什至看到一个有进取心的人建议使用#!/bin/bash是 错误 的,这样做会丢失 bash 功能。
#!/usr/bin/env bash
#!/bin/bash
综上所述,我在严格控制的测试环境中使用 bash,其中流通的每个驱动器本质上都是单个主驱动器的克隆。我理解可移植性论点,尽管它不一定适用于我的情况。是否有任何其他理由更喜欢#!/usr/bin/env bash替代方案,并且假设可移植性是一个问题,是否有任何理由使用它可能会破坏功能?
#!/usr/bin/env搜索PATH,bash但bash并不总是在 中/bin,尤其是在非 Linux 系统上。例如,在我的 OpenBSD 系统上,它位于 中/usr/local/bin,因为它是作为可选包安装的。
#!/usr/bin/env
PATH
bash
/bin
/usr/local/bin
如果您绝对确定bash并且/bin将永远存在,那么将其直接放入您的 shebang 并没有什么坏处——我建议您不要这样做,因为脚本和程序的寿命都超出了我们最初认为的寿命。