Как дать разрешение make-файлу на копирование папки? - PullRequest
0 голосов
/ 20 января 2020

Вот код:

    userPath=$(shell $$HOME)

    move:
        #what is the command?
        cp -r Minesweeper $(userPath)/

вот сообщение об ошибке

/bin/sh: 1: /home/daniel: Permission denied
cp -r Minesweeper /
cp: cannot create directory '/Minesweeper': Permission denied
Makefile:10: recipe for target 'move' failed
make: *** [move] Error 1

Конечно, есть какая-то команда, которая выполняется в терминале, может дать разрешение на make-файл, но мне нужен команда для выполнения в make-файле.

PS: Моя версия Ubuntu - Ubuntu 18.04

1 Ответ

2 голосов
/ 20 января 2020

Сам по себе Makefile не имеет или не имеет разрешений. В сообщении об ошибке говорится, что пользователь, запустивший этот Makefile, не обладает необходимыми привилегиями. Но это не совсем о разрешениях; вы заметите, что в сообщении об ошибке говорится, что вы не можете записать в каталог root, что, конечно, вам не нужно и не нужно (и вам не следует разрешать это, даже если вы думали, что хотите).

Первое сообщение об ошибке связано с тем, что $(shell $$HOME) не является допустимой командой. Допустимая команда будет выглядеть как $(shell echo "$$HOME"); но на самом деле это совершенно не нужно.

Вторая ошибка связана с тем, что первое присваивание вернуло пустую переменную из-за первой ошибки.

Причина, по которой здесь нет необходимости в $(shell ...) является то, что оболочка, которая выполняет команду, вполне способна расширять $$HOME сама На самом деле, так же может make (хотя тогда синтаксис будет ${HOME} простым и понятным).

move:
        cp -r Minesweeper ${HOME}/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...