Возьмем вопрос: если у вас есть
/bin/sh
ссылка на bash, то bash не будет вести себя так же, когда/bin/sh
вызывается так же, как при вызове as/bin/bash
. Когда он вызывается какsh
, он ограничивается в основном POSIX-совместимостью и ограниченным набором расширений.
Означает ли это, что всякий раз, когда я сталкиваюсь со сценарием оболочки в Linux с символом sh: « #!/bin/sh
даже если в этом дистрибутиве bin/sh
есть символическая ссылка на другую оболочку, такую как dash или bash, она должна быть на 100% совместима с оболочкой bourne, поскольку ограничить себя ограниченным набором расширений? Чтобы я мог выполнить их во FreeBSD? Есть ли исключения из этого? Или я должен с уверенностью предположить, что это будет работать?
Так что, если в дистрибутиве bin/sh
есть символьная ссылка bin/bash
и сценарий использования #!/bin/sh
и сценарий содержат bashism, он не будет работать, так как bash будет находиться в режиме sh?