Я предполагаю, что у вас есть TAB с отступом от вашего рецепта, который вы не показываете.
Проблема в том, что у вас есть только обратный слеш в конце первой строки, так что это единственная строка, которая "продолжал».Make вызывает каждую логическую строку в рецепте в отдельной оболочке, поэтому:
fixperms:
@if [ $(OS_NAME) == "Linux" ]; then \
@sudo chown --recursive php:php .
@sudo chmod --recursive 0777 var/
fi
Запускает следующие команды оболочки:
/bin/sh -c 'if [ $(OS_NAME) == "Linux" ]; then @sudo chown --recursive php:php .'
/bin/sh -c 'sudo chmod --recursive 0777 var/'
/bin/sh -c 'fi'
Вы видите, что это недопустимые сценарии оболочки;Вы получаете ошибку в первом из-за того, что вам не хватает fi
.
. Вы должны записать это как один командный скрипт оболочки, с обратными слешами, чтобы гарантировать, что следующая строка включена в логическую строку:
fixperms:
@if [ $(OS_NAME) == "Linux" ]; then \
sudo chown --recursive php:php . \
sudo chmod --recursive 0777 var/ \
fi
@if [ $(OS_NAME) == "Darwin" ]; then \
sudo chown --recursive php:php . \
sudo chmod -R 0777 var/ \
fi
(обратите внимание на @
в середине скрипта, так как они являются метасимволами рецепта makefile и распознаются только в начале рецепта).
Я действительно думаюВы должны удалить все @
.Это всегда фатальная ошибка, добавлять их по крайней мере до тех пор, пока ваш make-файл не будет работать на 100%, потому что вы выбрасываете критически важную информацию, которая в противном случае помогла бы вам отладить.Например, если бы у вас их не было здесь, вы бы напечатали строку, которую он собирался вызвать, и это могло бы помочь вам понять, в чем заключалась проблема.
Вы могли бы рассмотреть это: http://make.mad -scientist.net / управление-рецепт-Вторя /