Стандарт POSIX требует, чтобы make
всегда вызывал оболочку /bin/sh
. Он никогда не вызовет предпочитаемую пользователем оболочку (подумайте, какая катастрофа непереносимости , которой будет !)
Расширение скобки, которое вы хотите, не является частью определения POSIX sh
. Это дополнительная функция, предоставляемая bash
и некоторыми другими оболочками. В системах, где /bin/sh
- это ссылка на bash, таких как системы на базе MacOS и Red Hat, расширение скобок будет работать в make-файлах.
В системах, где /bin/sh
- это ссылка на POSIX- совместимая оболочка, такая как dash
, такая как Ubuntu, попытка использовать функции не-POSIX в ваших рецептах make-файла не будет работать.
Вы можете либо написать операцию касания, либо добавить:
SHELL := /bin/bash
в ваш make-файл, чтобы заставить make вызвать bash
. Просто помните, что ваш make-файл больше не переносится на системы, в которых не установлено /bin/bash
.