Я пишу сценарій, щоб скопіювати деякі файли навколо, і намагаюся використовувати, shopt -s dotglob щоб увімкнути cp, щоб копіювати dotfiles, як .jshintі що.
Я можу запускатись shopt -s dotglobпрямо під команду bash без помилок. Однак запуск сценарію видає помилку:
script.sh: 81: script.sh: shopt: not found
Я запускаю цей сценарій у bash shell із заголовком 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є вбудованим баштом, shне має shopt, і повідомлення про помилку виглядає як повідомлення про помилку dash. Тому, швидше за все, помилка тут запускає скрипт bash sh(який в Ubuntu dashза замовчуванням). Навіть якщо shце симпосилання на bash, запуск сценарію bash з shне є тим самим, як з його запуском bash.