Я пишу скрипт для копирования некоторых файлов и пытаюсь использовать его, 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
.