Я не могу понять, почему все всегда используют $(shell ...)
в рецептах. Есть ли какая-то сломанная инструкция где-то, которая рекомендует это? Это настолько вездесуще, и я никогда не видел ни одного примера make-файлов, которые бы это делали (правильно, потому что это действительно не очень хорошая идея).
В любом случае. Когда вы добавляете $(shell LOGIN_COMMAND)
что это делает? Он запускает оболочку и говорит оболочке запустить строку LOGIN_COMMAND
. Это не команда, которую знает оболочка, поэтому выдает ошибку «команда не найдена». Попробуйте набрать строку LOGIN_COMMAND
в командной строке: это то же самое.
Предположительно, вы имели в виду содержимое переменной LOGIN_COMMAND
. Для этого вам нужно записать его как $(LOGIN_COMMAND)
, чтобы make знал, что это ссылка на переменную, а не строка.
Но использование $(shell ...)
в рецепте излишне и сбивает с толку, поскольку рецепт уже является сценарием оболочки.
Плюс не совсем понятно, что вы действительно хотите сделать. Вы пытаетесь запустить команду ls
в локальной системе? Или вы пытаетесь запустить его в какой-нибудь удаленной системе где-нибудь?
Что вы хотите сделать с выводом операции aws ecr get-login ... | sed ...
?
Прежде чем пытаться написать make-файл, убедитесь, что вы можете выполнять операции, которые вы хотите сделать, в командной строке.