【问题标题】:How do I get a bash script working on FreeBSD, OpenBSD and Linux without modifying it?如何在不修改的情况下让 bash 脚本在 FreeBSD、OpenBSD 和 Linux 上运行?
【发布时间】:2013-10-30 05:38:28
【问题描述】:

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

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

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

【问题讨论】:

  • 另请注意,在 FreeBSD 系统上,无法保证 bash 完全可用,它是可选安装...

标签: linux bash freebsd openbsd


【解决方案1】:

在 shebang (#!/usr/bin/env bash) 中使用 env 会使脚本与操作系统无关。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-15
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-15
      相关资源
      最近更新 更多