Это ${HOME}
, а не $(HOME)
.
$(HOME)
будет расширяться до выхода команды HOME
. Поскольку там (возможно) нет такой команды, вы получите сообщение об ошибке.
Однако $(HOME)
- это правильный синтаксис в файле Makefile. Если вам нужна помощь в отладке вашего файла Makefile, вам нужно будет показать нам, что в нем, или, лучше, небольшой Makefile, который демонстрирует ту же проблему. make
правило как:
target:
echo $(HOME)
должен напечатать путь вашей домашней директории при запуске make target
.
В оболочке вы можете обратиться к переменной HOME
как $HOME
или как ${HOME}
; последний может избежать проблем с соседними маркерами.
В Makefile вы можете использовать либо $(HOME)
, либо ${HOME}
, но форма $(HOME)
более распространена. Вы можете опустить скобки только в том случае, если имя переменной длино один символ (но даже тогда вы должны использовать их для ясности). (Никто не утверждал, что make
- это модель четкого и интуитивно понятного синтаксиса.)
Make and Bash используют разные синтаксисы. Запуск кода для одного в другом - не такая хорошая идея. – Biffen