Mi shell bash no interactivo tiene extglob off. Me gustaría activarlo en la declaración inmediatamente antes de un comando, pero he notado que cuando shopt -s extglobestá dentro de un if .. then .. elsebloque, de alguna manera no se registra.
La siguiente extglob dependiente del comando no es válido: syntax error near unexpected token '('.
¿Dónde se extglobpuede establecer y por qué hay una restricción? ¿Esto se aplica a otras opciones? ... GNU bash 4.1.5
Esto funciona:
shopt -s extglob
if true ;then
touch a.bcd; ls a.@(bcd)
fi
Esto falla:
if true ;then
shopt -s extglob
touch a.bcd; ls a.@(bcd)
fi
... line 17: syntax error near unexpected token `('
... line 17: `touch a.bcd; ls a.@(bcd)'

alias e=echo; e hellono funcionar: la definición de alias solo tiene lugar en la próxima línea nueva.