对不起,标题可能有点刺激,但我不知道更好。无论如何,我想要一个bash脚本在FreeBSD,OpenBSD和Linux上运行而不修改它,但是bash并不位于Linux和BSD的同一个地方。
所以,如果我写#!/bin/bash
,那么它将不适用于BSD,因为bash shell位于/usr/local/bin/bash
。是否有任何解决方案可以让这个脚本同时工作?
或者我真的需要发送两个具有不同路径的脚本......?
答案 0 :(得分:15)
在shebang(env
)中使用#!/usr/bin/env bash
会使脚本操作系统无法识别。
答案 1 :(得分:4)
我喜欢使用#!/usr/bin/env bash
的答案
这是一个有趣且优秀的答案,但只有当bash在路径中时才会有效。
另一种选择可能是使用#!/bin/sh
,它是最普遍兼容的shell位置。
然后,让脚本在sh
中执行某些操作,例如检查安装bash
的位置(如果安装了bash
)。另一种选择可能是两个地点都存在bash
。进行另一次安装可能听起来有些过分,但这个目标可以像创建硬链接一样完成,以便bash实际存在于两个位置。