rm -rf против -rm -rf - PullRequest
       11

rm -rf против -rm -rf

31 голосов
/ 07 июня 2010

В Makefile я читаю:

-rm -rf (вместо rm -rf).Что означает первое «-» в начале строки в Makefile?

1 Ответ

55 голосов
/ 07 июня 2010

Это означает, что make само по себе будет игнорировать любой код ошибки от rm.

Если в makefile произойдет сбой какой-либо команды, то процесс make сам прекратит обработку. Приставляя к вашим командам -, вы уведомляете make, что он должен продолжить обработку правил независимо от результата выполнения команды.

Например, правило make-файла:

clean:
    rm *.o
    rm *.a

не не удалит файлы *.a, если rm *.o вернет ошибку (если, например, нет файлов *.o для удаления). Использование:

clean:
    -rm *.o
    -rm *.a

исправит эту проблему.


В сторону: Хотя это, вероятно, не требуется в вашем конкретном случае (поскольку появляется флаг -f, предотвращающий возвращение rm ошибки, когда файл не существует), все же рекомендуется пометить строку в явном виде в makefile - rm может при определенных обстоятельствах вернуть другие ошибки, и это прояснит ваше намерение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...