Bash

我可以在服務/守護程序腳本中使用 Bash 解釋器嗎?

  • July 17, 2014

我正在編寫一個應該從執行級別 2-5 開始的 Debian/Ubuntu 服務。

我遇到的大多數現有服務都是使用/bin/sh(Shell)解釋器編寫的,而/bin/bash(Bash)提供了很多改進和簡化。

那麼當目標僅限於 debian 6+ubuntu 12.04時,是否有充分的理由避免使用 bash

更新:

我通常將以下 shebang 添加到我的腳本中:#!/usr/bin/env bash

如果您專門針對始終附帶的系統bash(主要是典型的 Linux 發行版(?)),我認為使用它並沒有什麼壞處,如果它允許更多可維護的腳本或其他一些顯著優勢(當然前提是 shebang 正確反映bash依賴性)。

dash目標是成為一個精簡的 POSIX 兼容外殼。Debian 和 Ubuntu 改用它是為了在他們的大部分啟動腳本中獲得更輕的 shell(導致更快的啟動時間等),並確保他們所有聲稱可以執行的腳本/bin/sh實際上不會被意外的 bashism 所困擾.

另一方面,如果可移植性很重要,我認為您的預設/bin/sh( dash) 似乎是一個更好的起點,因為僅使用 POSIX shell 功能的腳本可能會在大多數係統上執行,而不僅僅是bash現有系統。但是,在處理可移植性時,除了外殼之外,當然還有許多其他因素需要考慮。

引用自:https://serverfault.com/questions/612786