Piszę skrypt do kopiowania niektórych plików i próbuję użyć, shopt -s dotglob aby umożliwić cp kopiowanie plików typu dot.jshint i podobnych.
Mogę uruchomić shopt -s dotglobbezpośrednio po wyświetleniu monitu bez żadnego błędu. Jednak uruchomienie skryptu powoduje zgłoszenie błędu:
script.sh: 81: script.sh: shopt: not found
Uruchamiam ten skrypt w powłoce bash z nagłówkiem shebang #!/usr/bin/env bash. Linia błędu:
shopt -s dotglob
cp -r $TEMP/img/* $TARGET/img/
cp -r $TEMP/js/* $TARGET/js/
cp -r $TEMP/less/* $TARGET/less/
Nie znalazłeś w Google nic przydatnego, masz pojęcie, na czym polega problem?
#!/bin/bashnagłówkiem?
shoptjest wbudowanym bashem, shnie ma go shopt, a komunikat o błędzie wygląda jak komunikat o błędzie z dash. Najprawdopodobniej więc tutaj błąd polega na uruchomieniu skryptu bash sh(który jest dashdomyślnie w Ubuntu ). Nawet jeśli shjest dowiązaniem symbolicznym bash, uruchomienie skryptu bash shnie jest tym samym, co uruchomienie go bash.