我正在编写一个Debian/Ubuntu服务,它应该从运行级别2-5开始。
我遇到的大多数现有服务都是使用/bin/sh (Shell)解释器编写的,而/bin/bash (Bash)提供了许多改进和简化。
那么,当目标仅限于debian 6+和ubuntu12.04时,是否有充分的理由避免使用bash呢?
我通常在我的脚本中添加下面的shebang:#!/usr/bin/env bash
发布于 2014-07-17 12:11:02
如果您专门针对总是与bash一起提供的系统(主要是典型的Linux发行版(?)如果这样做可以为您提供更可维护的脚本或其他一些重要的好处,我认为使用它不会有什么害处(当然,如果能够正确地反映bash的依赖性的话)。
dash的目标是成为一个精益POSIX兼容的shell。Debian和Ubuntu转而使用它.作为在大部分启动脚本中获得更轻外壳的一种手段(导致更快的启动时间等),以及确保它们声称使用/bin/sh运行的所有脚本实际上都不会被偶然的bashism所困扰。
另一方面,如果可移植性很重要,我认为默认的/bin/sh (dash)似乎是一个更好的起点,因为一个只使用POSIX特性的脚本可能会在大多数系统上运行,而不仅仅是那些有bash的系统。然而,在处理可移植性时,当然还有许多其他因素需要考虑,而不仅仅是shell。
发布于 2014-07-15 23:46:25
没有理由避免在启动脚本中使用bash。如果您对bash很满意,并且您喜欢它,因为它提供的功能您不会进入另一个shell,那么一定要使用它。首先,确保您的/bin/sh实际上不是指向/bin/bash的链接或/bin/bash本身的副本-在某些系统上是这样的。
发布于 2014-07-15 20:00:04
可能没有安装Bash。
与其他发行版不同,Debian和Ubuntu使用破折号,这是一个简化的Bourne shell,作为默认的/bin/sh shell。
https://serverfault.com/questions/612786
复制相似问题