Я пишу скрипт для копирования некоторых файлов и пытаюсь использовать его, shopt -s dotglob чтобы позволить cp копировать точечные файлы, как .jshintи еще много чего.
Я могу запустить shopt -s dotglobнапрямую в командной строке без ошибок. Однако при запуске сценария выдается ошибка:
script.sh: 81: script.sh: shopt: not found
Я запускаю этот скрипт в оболочке bash с заголовком shebang #!/usr/bin/env bash. Строка ошибки:
shopt -s dotglob
cp -r $TEMP/img/* $TARGET/img/
cp -r $TEMP/js/* $TARGET/js/
cp -r $TEMP/less/* $TARGET/less/
Не нашли ничего полезного в Google, есть идеи, в чем проблема?
#!/bin/bashзаголовком?
shoptявляется встроенным в bash, shне имеет shopt, и сообщение об ошибке выглядит как сообщение об ошибке от dash. Так что, скорее всего, ошибка здесь заключается в запуске bash-скрипта sh(который в Ubuntu используется dashпо умолчанию). Даже если shэто символическая ссылка bash, запуск bash-скрипта с shтем же, что и запуск с ним bash.