mv *.cache.{js,woff} sub_carpeta: funciona como comando de shell pero no dentro de un Makefile

mv *.cache.{js,woff} sub_carpeta: funciona como comando de shell pero no dentro de un Makefile

Después de crear algo, makequiero mover todos los archivos que terminan en .cache.{js,woff}una subcarpeta.

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

El problema es que, cuando se ejecuta, makeparece interpretarse *.cache.{js,woff}como un nombre de archivo y no como algo dinámico y, por supuesto, no hay ningún archivo que tenga el nombre explícito *.cache.{js,woff}. Cuando navego a la carpeta y la muevo manualmente desde el shell con el comando anterior, funciona sin problemas.

Entiendo que tiene que ver con el globbing pero no sé cómo solucionarlo.

Respuesta1

{...}es una sintaxis específica de bash para la expansión de llaves, pero se utiliza /bin/shde forma predeterminada en lugar de bash.

De info makela sección 5.3.2:

El programa utilizado como shell se toma de la variable SHELL. Si esta variable no está configurada en su archivo MAKE, el programa /bin/shse utiliza como shell.

Si desea utilizar bash para analizar construcciones de shell en su Makefile, puede agregar lo siguiente en la parte superior:

SHELL := /bin/bash

información relacionada