我的公司开始增加我们的Linux支持,我们的一些shell脚本开始变得更加复杂。今天我们用shebang作为
#! /bin/sh
但是我们遇到了一些像Ubuntu这样的发行版的问题,例如sh指向破折号和一些异国情调。
我的问题是,例如,将shebang改为bash的风险是什么? 也许更好的问题是,如果现在可以在没有bash的情况下发布一个发行版吗?
答案 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。使用你喜欢的任何翻译。