From c1065837227de0ec3885544b909f53e2feb29c50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-S=C3=A9bastien=20Hedde?= Date: Fri, 4 Feb 2022 16:48:34 +0100 Subject: [PATCH] completions/git: Support multiple git paths and resolve symlink Co-authored-by: Koichi Murase --- completions/git.completion.bash | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/completions/git.completion.bash b/completions/git.completion.bash index 06cc9c8..751623b 100644 --- a/completions/git.completion.bash +++ b/completions/git.completion.bash @@ -1,10 +1,17 @@ # bash completion support for Git. _omb_completion_git_initialize() { if ! _omb_util_function_exists __gitdir; then - local path - for path in $(type -aP git); - do - path="${path%/git}" + local git_paths path + IFS=$'\n' read -r -d '' -a git_paths <<< "$(type -aP git)" + # Note: Falling back on /usr (should already be in the array) + git_paths+=("/usr/bin/git") + for path in "${git_paths[@]}"; do + if [[ -L $path ]]; then + path=$(readlink -f $path) + fi + # Note: In the case of symbolic link, the true binary name can + # contain prefix or suffix for architectures and versions. + path="${path%/*}" local prefix="${path%/bin}" file for file in share/bash-completion/completions/git share/git-core/contrib/completion/git-completion.bash; do