История изменений
Исправление GPFault, (текущая версия) :
скрипты написанные на минимальном подмножестве работают везде одинаково.
Однако следить за тем что написано на минимальном подмножестве - это отдельная малоавтоматизируемая задача. Приходится заглядывать в мануал чтоб понять является ли какой-то нюанс в коде универсальным или просто «случайно работает на конкретнмо шелле». Но это мелочи.
Крупные проблемы совместимости начинаются там, когда из-за отсуствия втроенных продвинутых конструкций на каждый чих начинается вызов внешних утилит типа [
, grep
, awk
и что там вызывают в качестве калькулятора.
И теперь даже если сам код на sh оказывается соответствующим минмальным стандартам - встаёт вопрос о том, а полностью ли совместимо использование [
в коде или случайно заюзали какое-то расширение?
Если же писать bash по максимум используя внутренние функции, и по минимуму внешние вызовы - то в вопросе своместимости остаётся только версионирование bash. Что тоже конечно вопрос, но это уже одномерная шкала совместимости, а не вопрос из версий кучи разных утилит.
Также доки на возможности bash собраны в одном линейном месте, в man bash
. А вот на весь этот зоопарк утилит - есть одна линейная дока?
Когда в целевой системе есть питон то пишу только под него. Но быват ситуации когда скрипт должен мочь выполниться во всяких примитивных окружениях где питона реально нет, поэтому ниша для bash/sh остаётся
Исходная версия GPFault, :
скрипты написанные на минимальном подмножестве работают везде одинаково.
Однако следить за тем что написано на минимальном подмножестве - это отдельная малоавтоматизируемая задача. Приходится заглядывать в мануал чтоб понять является ли какой-то нюанс в коде универсальным или просто «случайно работает на конкретнмо шелле». Но это мелочи.
Крупные проблемы совместимости начинаются там, когда из-за отсуствия втроенных продвинутых конструкций на каждый чих начинается вызов внешних утилит типа [
, grep
, awk
и что там вызывают в качестве калькулятора.
И теперь даже если сам код на sh оказывается соответствующим минмальным стандартам - встаёт вопрос о том, а полностью ли совместимо использование [
в коде или случайно заюзали какое-то расширение?
Если же писать bash по максимум используя внутренние функции, и по минимуму внешние вызовы - то в вопросе своместимости остаётся только версионирование bash. Что тоже конечно вопрос, но это уже одномерная шкала совместимости, а не вопрос из версий кучи разных утилит.
Когда в целевой системе есть питон то пишу только под него. Но быват ситуации когда скрипт должен мочь выполниться во всяких примитивных окружениях где питона реально нет, поэтому ниша для bash/sh остаётся