Hello Gabriel,

I found the cause. It is the wrapper function have() of the obviously newer 
function _have() in the shell script

        /usr/share/bash-completion/bash_completion

As shown there, have() is still kept for backwards compatibility reasons:

--------------------------------------8<-----------------------------------------
# This function checks whether we have a given program on the system.
#
_have()
{
    # Completions for system administrator commands are installed as well in
    # case completion is attempted via `sudo command ...'.
    PATH=$PATH:/usr/sbin:/sbin:/usr/local/sbin type $1 &>/dev/null
}

# Backwards compatibility for compat completions that use have().
# @deprecated should no longer be used; generally not needed with dynamically
#             loaded completions, and _have is suitable for runtime use.
have()
{
    unset -v have
    _have $1 && have=yes
}
--------------------------------------8<-----------------------------------------

If have() is used AND bash-completion script is stored into directory

        /usr/share/bash-completion/completions

completion does not work anymore. If the script with the old have() function is 
stored in the path

        /etc/bash_completion.d/

it will work as reported earlier.

If we replace have() by _have() or simply remove it in the bash completion 
script (like many other do) it will work in both storage paths.


-- 
Jürgen

Reply via email to