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
エントリの1つが$PATH
アクセスできないディレクトリを指しており、1.7.10.1より前のバージョンのgitを使用しています。
gitを初めて実行すると、使用しているgit lg
コピーにアイテムを追加するなど、いくつかの設定が行われます。その後、コマンドはエイリアスをオーバーライドするように$PATH
コマンドを実行しようとします。git-lg
これを行うと、出力に権限拒否エラーが表示されます。
以前のバージョンのgitはこの時点で停止します。バージョン1.7.10.1以降、このエラーはコマンドが見つからないのと同じように扱われます。
rootとしてコマンドを実行すると、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ありがとう