我有一个跨平台产品,可以部署到几个Linux发行版,我正在忙着更改其中一个启动脚本.目前该脚本使用/ bin / sh作为解释器.我的问题是.如果我将其更改为/ bin / bash,我会有多安全,是否会出现某些未安装bash或其他情况的情况.为什么/etc/init.d中的所有脚本都使用/ bin / sh.使用bash时会有一些东西会破坏吗?
最佳答案
Can I assume bash is installed
如果可移植性是一个目标,那么假设安装了bash,你自己就会受到伤害.这并不是说99%的时间不会安装bash,而是获得ya的1%.
How safe am I if I change this to /bin/bash,will there be some cases that bash is not installed or something
bash是一个POSIX Compliant shell,所以除非你需要/想要使用bash-only语法,否则我不会只是随心所欲地将解释器行更改为#!/ bin / bash;它使用与#!/ bin / sh一起使用的脚本购买任何东西
Why does all the scripts in
/etc/init.d use /bin/sh
因为如果管理员决定通过删除bash来保存硬盘空间,因为他们最喜欢的shell是zsh,他们不希望系统关闭
Are there some stuff that will break
when using bash?
反过来也是如此.如果你有一个只有bash-only(非POSIX)语法的脚本,例如[[]]或进程替换<(),如果你将解释器从#!/ bin / bash改为#!/ bin,这将会中断/ SH