Estou escrevendo um script para copiar alguns arquivos e tentando usar shopt -s dotglob
para permitir que o cp copie arquivos de ponto como .jshint
e outros enfeites.
Eu posso executar shopt -s dotglob
diretamente em um prompt do bash sem nenhum erro. No entanto, a execução do script gera o erro:
script.sh: 81: script.sh: shopt: not found
Estou executando esse script no shell bash, com o cabeçalho shebang #!/usr/bin/env bash
. Linha de erro:
shopt -s dotglob
cp -r $TEMP/img/* $TARGET/img/
cp -r $TEMP/js/* $TARGET/js/
cp -r $TEMP/less/* $TARGET/less/
Não encontrou nada útil no google, alguma ideia de qual é o problema aqui?
#!/bin/bash
cabeçalho mais simples ?
shopt
é um bash embutido, sh
não possui shopt
, e a mensagem de erro parece uma mensagem de erro de dash
. Então, provavelmente, o erro aqui está executando um script bash sh
(que no Ubuntu é dash
por padrão). Mesmo que sh
seja um link simbólico bash
, executar um script bash sh
não é o mesmo que executá-lo bash
.