Я пишу службу 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
настоящее время. Тем не менее, конечно, вероятно, есть много других факторов, помимо оболочки, которые следует учитывать при работе с переносимостью.