抱歉,标题可能有点刺激,但我不知道有什么更好的。无论如何,我希望 bash 脚本可以在 FreeBSD、OpenBSD 和 Linux 上运行而无需对其进行修改,但是 bash 在 Linux 和 BSD 中的位置不同。
所以,如果我写#!/bin/bash
的话,它就不能在 BSD 上工作,因为 bash shell 就在/usr/local/bin/bash
里面。有什么解决方案可以让这个脚本同时运行吗?
或者我真的需要发送两个具有不同路径的脚本......?
env
在 shebang ( ) 中使用#!/usr/bin/env bash
应该使脚本操作系统不可知。
我喜欢关于 using #!/usr/bin/env bash
It的答案是一个有趣且出色的答案,但只有当 bash 在路径中时才有效。
另一种选择可能是使用#!/bin/sh
最普遍兼容的外壳位置。然后,让脚本在 中执行某些操作sh
,例如检查bash
安装位置(如果bash
已安装)。另一种选择可能是bash
两个位置都存在。进行另一个安装可能听起来有点矫枉过正,但这个目标可以像创建一个硬链接一样简单地实现,以便 bash 实际上存在于两个位置。