У меня есть Баш скрипт, содержащий следующую строку:Bad подмена
dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
Это работает отлично на OSX.
Однако, когда я переместить его переместить скрипт на контейнер Докер под управлением Debian, он не будет работать на указанной выше линии с этим сообщением:
Bad substitution
Любая идея, почему это происходит?
Что притон по сценарию? '#!/bin/sh' не bash. (Даже когда '/ bin/sh' реализуется как символическая ссылка на bash, он работает в режиме POSIX, отключая многие расширения до стандарта). Если вам нужен полный синтаксис bash, ваш shebang * должен * быть '#!/Bin/bash'. –
(Аналогично, запуск сценария с помощью 'sh yourscript' будет интерпретировать его с помощью оболочки, гарантированной только для обеспечения функциональности POSIX-базовой линии, даже если этот скрипт начинается с' #!/Bin/bash'). –