@@ -2610,14 +2610,31 @@ _comp_xfunc()
26102610} 
26112611
26122612#  source compat completion directory definitions
2613- _comp__init_compat_dir=${BASH_COMPLETION_COMPAT_DIR:-/ etc/ bash_completion.d}  
2614- if  [[ -d  $_comp__init_compat_dir  &&  -r  $_comp__init_compat_dir  &&  -x  $_comp__init_compat_dir  ]];  then 
2613+ _comp__init_compat_dirs=() 
2614+ if  [[ -n  $BASH_COMPLETION_COMPAT_DIR  ]];  then 
2615+     _comp__init_compat_dirs+=(" $BASH_COMPLETION_COMPAT_DIR "  
2616+ else 
2617+     _comp__init_compat_dirs+=(/etc/bash_completion.d) 
2618+     #  Similarly as for the "completions" dir, look up from relative to 
2619+     #  bash_completion, primarily for run-in-place-from-git-clone setups. 
2620+     #  Notably we do it after the system location here, in order to 
2621+     #  prefer in-tree variables and functions. 
2622+     if  [[ $BASH_SOURCE  ==  * /*  ]];  then  
2623+         _comp__init_compat_dir=" ${BASH_SOURCE%/* } /bash_completion.d"  
2624+         [[ ${_comp__init_compat_dirs[0]}  ==  " $_comp__init_compat_dir " ||  
2625+             _comp__init_compat_dirs+=(" $_comp__init_compat_dir "  
2626+     else  
2627+         _comp__init_compat_dirs+=(./bash_completion.d) 
2628+     fi  
2629+ fi 
2630+ for  _comp__init_compat_dir  in  " ${_comp__init_compat_dirs[@]} " ;  do 
2631+     [[ -d  $_comp__init_compat_dir  &&  -r  $_comp__init_compat_dir  &&  -x  $_comp__init_compat_dir  ]] ||  continue  
26152632    for  _comp__init_file  in  " $_comp__init_compat_dir " * ;  do  
26162633        [[ ${_comp__init_file##*/ }  !=  @ ($_comp_backup_glob | Makefile* | ${BASH_COMPLETION_COMPAT_IGNORE-} ) &&  
26172634            -f  $_comp__init_file  &&  -r  $_comp__init_file  ]] &&  .  " $_comp__init_file "  
26182635    done  
2619- fi 
2620- unset  -v _comp__init_compat_dir _comp__init_file
2636+ done 
2637+ unset  -v _comp__init_compat_dirs  _comp__init_compat_dir _comp__init_file
26212638
26222639#  source user completion file
26232640# 
0 commit comments