Git 별칭 "권한이 거부되었습니다"

Git 별칭 "권한이 거부되었습니다"

Git 별칭에서 "권한 거부" 오류가 발생합니다. 루트에서는 작동하지만 내 사용자 계정에서는 작동하지 않습니다.

$ andy@ubuntu:/usr/local/bin$ sudo git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
$ andy@ubuntu:/usr/local/bin$ git lg
    fatal: cannot exec 'git-lg': Permission denied
$ andy@ubuntu:/usr/local/bin$

어떤 아이디어가 있나요?

답변1

항목 중 하나가 $PATH액세스할 수 없는 디렉터리를 가리키고 있으며 1.7.10.1보다 이전 버전의 git을 사용하고 있습니다.

git을 처음 실행하면 사용 중인 git lg복사본에 항목을 추가하는 등 몇 가지 설정이 수행됩니다. 그런 다음 명령이 별칭을 재정의하도록 $PATH명령을 실행하려고 시도합니다 . git-lg이를 수행하면 출력에 권한 거부 오류가 표시됩니다.

이전 버전의 git은 이 시점에서 중지됩니다. 버전 1.7.10.1부터 이 오류는 명령을 찾을 수 없는 것과 동일하게 처리됩니다.

루트로 명령을 실행하면 git은 git의 모든 디렉터리를 조사하여 존재 $PATH하지 않는 디렉터리를 찾을 수 있으므로 git-lg정의된 별칭을 계속 사용합니다.

이 문제를 해결하려면 최신 버전의 git으로 업그레이드할 수 있습니다. 또 다른 옵션은 $PATH문제가 있는 디렉터리에 추가 권한을 부여하거나 해당 디렉터리를 목록에 포함하지 않음으로써 나열된 모든 디렉터리에 액세스할 수 있는지 확인하는 것입니다 .

답변2

qqx의 답변에 추가하려면 (https://unix.stackexchange.com/a/65768/253433).

따라서 PATH를 적절한 권한이 있는 경로 목록으로 제한하면 문제가 없습니다.

PATH=/usr/bin git lg

또는 좀 더 고집스럽게 말하자면:

alias git='PATH=/usr/bin git'
git lg

QQ님 감사합니다

관련 정보