LINUX.ORG.RU

История изменений

Исправление GPFault, (текущая версия) :

скрипты написанные на минимальном подмножестве работают везде одинаково.

Однако следить за тем что написано на минимальном подмножестве - это отдельная малоавтоматизируемая задача. Приходится заглядывать в мануал чтоб понять является ли какой-то нюанс в коде универсальным или просто «случайно работает на конкретнмо шелле». Но это мелочи. Крупные проблемы совместимости начинаются там, когда из-за отсуствия втроенных продвинутых конструкций на каждый чих начинается вызов внешних утилит типа [, grep, awk и что там вызывают в качестве калькулятора.

И теперь даже если сам код на sh оказывается соответствующим минмальным стандартам - встаёт вопрос о том, а полностью ли совместимо использование [ в коде или случайно заюзали какое-то расширение?

Если же писать bash по максимум используя внутренние функции, и по минимуму внешние вызовы - то в вопросе своместимости остаётся только версионирование bash. Что тоже конечно вопрос, но это уже одномерная шкала совместимости, а не вопрос из версий кучи разных утилит.

Также доки на возможности bash собраны в одном линейном месте, в man bash. А вот на весь этот зоопарк утилит - есть одна линейная дока?

Когда в целевой системе есть питон то пишу только под него. Но быват ситуации когда скрипт должен мочь выполниться во всяких примитивных окружениях где питона реально нет, поэтому ниша для bash/sh остаётся

Исходная версия GPFault, :

скрипты написанные на минимальном подмножестве работают везде одинаково.

Однако следить за тем что написано на минимальном подмножестве - это отдельная малоавтоматизируемая задача. Приходится заглядывать в мануал чтоб понять является ли какой-то нюанс в коде универсальным или просто «случайно работает на конкретнмо шелле». Но это мелочи. Крупные проблемы совместимости начинаются там, когда из-за отсуствия втроенных продвинутых конструкций на каждый чих начинается вызов внешних утилит типа [, grep, awk и что там вызывают в качестве калькулятора.

И теперь даже если сам код на sh оказывается соответствующим минмальным стандартам - встаёт вопрос о том, а полностью ли совместимо использование [ в коде или случайно заюзали какое-то расширение?

Если же писать bash по максимум используя внутренние функции, и по минимуму внешние вызовы - то в вопросе своместимости остаётся только версионирование bash. Что тоже конечно вопрос, но это уже одномерная шкала совместимости, а не вопрос из версий кучи разных утилит.

Когда в целевой системе есть питон то пишу только под него. Но быват ситуации когда скрипт должен мочь выполниться во всяких примитивных окружениях где питона реально нет, поэтому ниша для bash/sh остаётся