9

抱歉,标题可能有点刺激,但我不知道有什么更好的。无论如何,我希望 bash 脚本可以在 FreeBSD、OpenBSD 和 Linux 上运行而无需对其进行修改,但是 bash 在 Linux 和 BSD 中的位置不同。

所以,如果我写#!/bin/bash的话,它就不能在 BSD 上工作,因为 bash shell 就在/usr/local/bin/bash里面。有什么解决方案可以让这个脚本同时运行吗?

或者我真的需要发送两个具有不同路径的脚本......?

4

2 回答 2

15

env在 shebang ( ) 中使用#!/usr/bin/env bash应该使脚本操作系统不可知。

于 2013-07-12T12:16:15.710 回答
4

我喜欢关于 using #!/usr/bin/env bash It的答案是一个有趣且出色的答案,但只有当 bash 在路径中时才有效。

另一种选择可能是使用#!/bin/sh最普遍兼容的外壳位置。然后,让脚本在 中执行某些操作sh,例如检查bash安装位置(如果bash已安装)。另一种选择可能是bash两个位置都存在。进行另一个安装可能听起来有点矫枉过正,但这个目标可以像创建一个硬链接一样简单地实现,以便 bash 实际上存在于两个位置。

于 2013-10-29T21:13:20.407 回答