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

Mac*_*Mac 3 linux bash shell sh dash-shell

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

#! /bin/sh
Run Code Online (Sandbox Code Playgroud)

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

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

Dun*_*nes 5

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

#! /usr/bin/env bash 
Run Code Online (Sandbox Code Playgroud)

通常比较喜欢

#! /bin/bash
Run Code Online (Sandbox Code Playgroud)

因为它允许系统以非标准方式/位置安装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操作系统是非常不幸的.

  • 另见http://manpages.ubuntu.com/manpages/lucid/man1/checkbashisms.1.html (2认同)