Если бы я хотел быть уверен, что написанный мной сценарий максимально переносим и использует только POSIX особенности и нет, скажем, трепать функции, есть ли явный способ проверить это?
Очевидно, я мог бы попробовать запустить его в оболочке, отличной от моей обычной оболочки, но это только подтверждает, что мой сценарий ограничен функциями, поддерживаемыми этой оболочкой ... функциями, которые сами по себе могут выходить за рамки POSIX.
В POSIX режим БАШ, легко запустить:
bash --posix /PathToYourScript
чтобы войти в него и запустить там свой скрипт.
Это должно дать вам довольно четкое представление о том, является ли ваш сценарий POSIX- совместимы или нет.
Из того, что я читал, DASH, что является стандартным (sh
символическая ссылка на dash
) в Ubuntu / Debian и производных - очень строгий POSIX shell, который, возможно, стоит попробовать, потому что он даже строже, чем БАШ в POSIX Режим.
Альтернативный подход к Ответ Тима Шумахера было бы скопировать и вставить скрипт в ShellCheck.net, только изменяя Шебанг к #!/bin/sh
и внимательно изучаю вывод.
Этот подход может быть даже лучше, если вы что-то кодируете и ищете не только несоблюдение POSIX, но и другие ошибки и предложения. Вы будете особенно впечатлены, если будете использовать его ежедневно.
Конечно, можно:
bash --posix /PathToYourScript
Но по моему опыту, DASH, который является стандартным для Ubuntu / Debian и производных (sh
символическая ссылка на dash
), является очень строгим POSIX оболочка и даже строже, чем БАШ в POSIX Режим.