bash: команда работает при вводе вручную, но не в скрипте

У меня есть простая команда bash, которая делает некоторые вещи и в какой-то момент пыталась удалить все, кроме нескольких вещей. При запуске внутри скрипта происходит сбой. Но когда я пытаюсь запустить его снова, он работает.

Это моя команда bash:

#! /bin/bash
set -e

cd spaceship-go
git checkout master
git pull origin master
mdbook build
cd ..
rm -rf -v !("spaceship-go"|"build-book.sh")
mv spaceship-go/book/* .
rm -rf spaceship-go/book

Вывод, который я получаю:

blas@f1:~/projects/spaceship-go-gh-pages$ ./build-book.sh 
Already on 'master'
Your branch is up to date with 'origin/master'.
From https://github.com/blasrodri/spaceship-go
 * branch            master     -> FETCH_HEAD
Already up to date.
2020-06-13 13:27:52 [INFO] (mdbook::book): Book building has started
2020-06-13 13:27:52 [INFO] (mdbook::book): Running the html backend
./build-book.sh: 9: Syntax error: "(" unexpected

Однако при запуске его вручную на моем терминале он не ломается:

blas@f1:~/projects/spaceship-go-gh-pages$ rm -rf -v !("spaceship-go"|"build-book.sh")
blas@f1:~/projects/spaceship-go-gh-pages$ echo $?

person blasrodri    schedule 13.06.2020    source источник
comment
установите shopt -s extglob в вашем скрипте, он включен по умолчанию в вашей интерактивной оболочке   -  person Inian    schedule 13.06.2020
comment
Кроме того, он работал с использованием source <script name>   -  person blasrodri    schedule 13.06.2020