Git 别名“权限被拒绝”

Git 别名“权限被拒绝”

我在 git 别名上收到“权限被拒绝”错误。它适用于 root,但不适用于我的用户帐户:

$ 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指向您无法访问的目录,并且您使用的 git 版本早于 1.7.10.1。

当您首先运行git 时,会进行一些设置,包括向其正在使用的git lg副本添加一个条目。$PATH然后它尝试运行该命令git-lg,以便命令覆盖该别名。当它这样做时,它会在输出中显示权限被拒绝的错误。

旧版本的 git 将在此时停止。从版本 1.7.10.1 开始,它将将该错误视为与未找到命令相同。

当您以 root 身份运行该命令时,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

相关内容