--- bash-completion-2.1/bash_completion | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) --- bash-completion-2.1/bash_completion +++ bash-completion-2.1/bash_completion @@ -952,13 +952,21 @@ _dollar() [[ "$COMP_LINE" == cd* ]] && s="/" case "$1" in + \$\(*\)) + ((glob == 0)) && shopt -u extglob + return 0 + ;; \$\(*) - COMPREPLY=($(compgen -c -P '$(' -S ")$s" -- ${1#??})) - let cmd++ + COMPREPLY=($(compgen -c -P '$(' -S ")$s" -- ${1:2})) + ((${#COMPREPLY[@]} <= 0)) && let cmd++ + ;; + \`*\`) + ((glob == 0)) && shopt -u extglob + return 0 ;; \`*) - COMPREPLY=($(compgen -c -P '\`' -S "\`$s" -- ${1#?})) - let cmd++ + COMPREPLY=($(compgen -c -P '\`' -S "\`$s" -- ${1:1})) + ((${#COMPREPLY[@]} <= 0)) && let cmd++ ;; \$\{*) COMPREPLY=($(compgen -v -P '${' -S "}$s" -- ${1#??})) ;; @@ -971,8 +979,8 @@ _dollar() if ((${#COMPREPLY[@]} > 0)) ; then ((${#COMPREPLY[@]} == 1)) && eval COMPREPLY=\(${COMPREPLY[@]}\) - elif ((cmd == 0)); then - eval COMPREPLY=\(${1}\) + elif ((cmd > 0)); then + compopt -o default -o bashdefault -o nospace fi ((glob == 0)) && shopt -u extglob