Назад | Перейти на главную страницу

Могу ли я использовать интерпретатор Bash в сценариях службы / демона?

Я пишу службу Debian / Ubuntu, которая должна запускаться на уровне выполнения 2-5.

Большинство существующих сервисов, с которыми я столкнулся, написаны с использованием /bin/sh (Shell) интерпретатор, пока /bin/bash (Bash) предлагает множество улучшений и упрощений.

Так там хорошо причины избегать использования bash, когда цели ограничено debian 6+ и убунту 12.04 ?

Обновить:

Обычно я добавляю в свои скрипты следующий шебанг: #!/usr/bin/env bash

Нет причин избегать использования bash в сценариях запуска. Если вам комфортно с bash, и он вам нравится, потому что он предлагает функции, которых нет в другой оболочке, непременно используйте его. Во-первых, убедитесь, что ваш / bin / sh на самом деле не является ссылкой на / bin / bash или копией самого / bin / bash - в некоторых системах это так.

Возможно, Bash не установлен.

В отличие от других дистрибутивов, Debian и Ubuntu в качестве оболочки по умолчанию / bin / sh используют урезанную оболочку Bourne - dash.

Если вы специально нацеливаетесь на системы, которые всегда поставляются с bash (в первую очередь, типичные дистрибутивы Linux (?)) Я не вижу вреда в его использовании, если это дает вам более удобные сценарии или некоторые другие существенные преимущества (при условии, конечно, что shebang правильно отражает bash зависимость).

dash стремится стать компактной оболочкой, совместимой с POSIX. Debian и Ubuntu перешли на него как средство получения более легкой оболочки в большинстве своих сценариев запуска (что приводит к более быстрой загрузке и т. д.), а также для обеспечения того, чтобы все их сценарии, которые утверждают, что работают с /bin/sh на самом деле не пронизаны случайными башизмами.

Если, с другой стороны, важна переносимость, я думаю, что вы по умолчанию /bin/sh (dash) кажется гораздо лучшей отправной точкой, поскольку сценарий, который использует только функции оболочки POSIX, вероятно, будет работать в большинстве систем, а не только с bash настоящее время. Тем не менее, конечно, вероятно, есть много других факторов, помимо оболочки, которые следует учитывать при работе с переносимостью.