我可以假设安装了bash

Han*_*ger 6 linux bash debian

我有一个跨平台产品,可以部署到几个Linux发行版,我正在忙着更改其中一个启动脚本.目前该脚本使用/ bin/sh作为解释器.我的问题是.如果我将其更改为/ bin/bash,我会有多安全,是否会出现某些未安装bash或其他情况的情况.为什么/etc/init.d中的所有脚本都使用/ bin/sh.使用bash时会有一些东西会破坏吗?

Sie*_*geX 13

我可以假设安装了bash

如果可移植性是一个目标,那么你自己就会假设bash已经安装了.这并不是说bash99%的时间都不会安装,而是1%会得到你.

如果我将其更改为/ bin/bash,我会有多安全,是否会出现某些未安装bash或其他情况的情况

bash是一个POSIX兼容 shell,所以除非你需要/想要使用仅bash语法,我不会只是#!/bin/bash随心所欲地改变解释器行; 它可以用一个可以使用的脚本购买任何东西#!/bin/sh

为什么/etc/init.d中的所有脚本都使用/ bin/sh

因为如果管理员决定通过删除来保存硬盘空间,bash因为他们最喜欢的外壳,他们不希望系统停机zsh

使用bash时会有一些东西会破坏吗?

反过来也是如此.如果你有一个只有bash-only(非POSIX)语法的脚本,例如[[ ]]或者进程替换<( ),如果你将解释器更改#!/bin/bash#!/bin/sh

  • 此外,启动脚本使用`sh`,因为它比Bash更快. (4认同)
  • http://mywiki.wooledge.org/Bashism https://wiki.ubuntu.com/DashAsBinSh Debian和Ubuntu已经将sh从bash切换到dash,因此你可以在他们对sh进行的更改中找到大量示例因此,脚本甚至在他们的工具中都有一个checkbashisms脚本来帮助找到它们. (2认同)