mv *.cache.{js,woff} sub_folder - funciona como comando shell, mas não dentro de um Makefile

mv *.cache.{js,woff} sub_folder - funciona como comando shell, mas não dentro de um Makefile

Depois de construir algo, makequero mover todos os arquivos que terminam .cache.{js,woff}para uma subpasta.

(cd $(PFROOT)/PVWR2/gwt/pdfwebviewer/; \
mkdir -p cache_files; \
mv *.cache.{js,woff} sub_folder)

O problema é que ao executar makeele parece interpretar *.cache.{js,woff}como um nome de arquivo e não como algo dinâmico e claro que não existe nenhum arquivo que tenha o nome explícito *.cache.{js,woff}. Quando eu apenas navego até a pasta e a movo manualmente do shell com o comando acima, ela funciona sem problemas.

Eu entendo que tem a ver com globbing, mas não sei como consertar isso.

Responder1

{...}é uma sintaxe específica do bash para expansão de chaves, mas usa /bin/shpor padrão em vez de bash.

De info make, seção 5.3.2:

O programa usado como shell é retirado da variável SHELL. Se esta variável não estiver definida em seu makefile, o programa /bin/shserá usado como shell.

Se quiser usar o bash para analisar construções de shell em seu Makefile, você pode adicionar o seguinte ao topo:

SHELL := /bin/bash

informação relacionada