设置/ bin / sh以外的Linux shell有问题吗?

时间:2012-12-13 00:00:56

标签: linux bash shell sh dash-shell

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

#! /bin/sh

但是我们遇到了一些像Ubuntu这样的发行版的问题,例如sh指向破折号和一些异国情调。

我的问题是,例如,将shebang改为bash的风险是什么? 也许更好的问题是,如果现在可以在没有bash的情况下发布一个发行版吗?

3 个答案:

答案 0 :(得分:5)

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

#! /usr/bin/env bash 

通常优先于

#! /bin/bash

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

回答你的第二个问题:“这些天有没有bash的发行版”。好吧,当然它是可能的,但这是非常不可能的。来自维护者的bash website - bash 4.x是GNU / Linux和Mac OSX的标准配置,在Windows上,Cygwin和MinGW都附带bash 3.x.有BSD的端口,Solaris自8+以来就有bash版本,其中10个用bash 4.x发送。

这似乎表明,在没有bash的情况下找到一个GNU / Linux操作系统是非常不幸的。

答案 1 :(得分:4)

我认为你问的是错误的问题。更好的问题是:“对于使用非可移植shell语法(aka,bashisms)的脚本,使用#!/bin/sh有多糟糕”。答案是:“非常糟糕”。修复你的shebangs。如果您编写#!/bin/sh但写了bash脚本,则表示您遇到了麻烦。不要再认为dash是异国情调了,你会编写更多可移植代码。简而言之,修复你的shebang并不是一件坏事,不这样做是非常糟糕的。

答案 2 :(得分:1)

除了将其更改为PHP之外没有其他风险。或者Perl。或者Python。使用你喜欢的任何翻译。