공통 사용자 이름을 변수로 얻는 방법

공통 사용자 이름을 변수로 얻는 방법

메이크파일 스크립트를 생성하고 특정 디렉터리에 여러 폴더를 자동으로 생성하려고 합니다. 그러나 이것을 구현하려고 할 때 문제가 발생했습니다. 먼저 일반적인 경로를 따라 보았습니다.

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.

관련 정보