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님 감사합니다