메이크파일 스크립트를 생성하고 특정 디렉터리에 여러 폴더를 자동으로 생성하려고 합니다. 그러나 이것을 구현하려고 할 때 문제가 발생했습니다. 먼저 일반적인 경로를 따라 보았습니다.
mkdir ~/Documents/testfolder
그러나 다음과 같은 오류가 발생합니다.
mkdir: cannot create directory '/root/Documents/testfolder': No such file or directory
$USER
그런 다음 다음을 통해 변수를 사용 하려고 합니다 .
mkdir /home/$USER/Documents/testfolder
하지만 그러면 으로 등록되어 /home/root/Documents/...
오류가 발생합니다. Makefile 스크립트는 대부분 sudo로 실행되어야 하므로 이것이 나에게 큰 문제입니다. 도움이 필요하세요?
답변1
쉘 환경에 해당 항목이 있으면 모든 환경 변수를 가져왔으므로 $USER
제대로 작동해야 합니다 . 하지만 실제로 현재 사용자 ID를 반영 make
하는지 주의할 필요가 있습니다 .$USER
그러나 Makefile 내부에는 쉘 스크립트 내부 규칙 외에 다른 규칙이 있습니다. 다음 makefile을 사용하여 이를 확인할 수 있습니다.
all:
echo USER: $(USER)
이것은 작동합니다. make
단일 문자보다 긴 매크로 이름을 생성하려면 $(...)가 필요합니다 . 그렇지 않으면 $U
확장되므로 괄호가 필요합니다 .
이제 귀하의 권한에 대해 이야기하겠습니다. 쉘 변수를 변경하지 않고 사용자 ID를 변경하기 위해 su
또는 같은 프로그램을 사용한 것으로 보입니다 .sudo
$USER
실행하려는 사용자로 직접 로그인해 보십시오 make
.