3

我的公司开始增加对 Linux 的支持,并且我们的一些 shell 脚本开始变得更加复杂。今天我们使用shebang作为

#! /bin/sh

但是我们遇到了一些发行版(例如 Ubuntu)的问题,例如其中 sh 指向 dash 和一些更奇特的。

我的问题是,例如将 shebang 更改为 bash 有什么风险?也许更好的问题是这些天是否可以有一个没有 bash 的发行版?

4

3 回答 3

5

最好更改它,如果您依赖 bash 特定语法,那么您的 shell 脚本需要声明它需要 bash 而不是通用 shell。

#! /usr/bin/env bash 

通常首选

#! /bin/bash

因为它允许系统以非标准方式/位置安装 bash

回答您的第二个问题:“这些天是否可以有一个没有 bash 的发行版”。嗯,当然有可能,但可能性极小。来自 bash 维护者的网站——bash 4.x 在 GNU/Linux 和 Mac OSX 上是标准的,在 Windows 上,Cygwin 和 MinGW 都附带 bash 3.x。有用于 BSD 的端口,并且 Solaris 自 8+ 以来就提供了 bash 版本,其中 10 个随 bash 4.x 一起提供。

这似乎表明你会非常不幸地找到没有 bash 的 GNU/Linux 操作系统。

于 2012-12-13T00:07:17.533 回答
4

我想你问错问题了。更好的问题是:“#!/bin/sh用于使用非可移植 shell 语法(又名 bashisms)的脚本有多糟糕”。答案是:“真的很糟糕”。修复你的shebangs。如果你写#!/bin/sh但写一个bash脚本,你就是在自找麻烦。别再把dash它想象成异国情调了,你会写出更可移植的代码。简而言之,修复你的shebangs一点也不坏,不这样做是非常糟糕的。

于 2012-12-13T04:55:49.480 回答
1

没有比将其更改为 PHP 更大的风险。或者到 Perl。或者到 Python。使用任何你喜欢的口译员。

于 2012-12-13T00:02:40.547 回答