为什么文件名自动完成不起作用?

时间:2018-03-23 09:43:04

标签: bash perl autocomplete

当我输入命令时:

$ perl -Ilib t/mojolicious/patt TAB + TAB

自动完成工作正常。但是当我使用-d选项时:

$ perl -Ilib -d t/mojolicious/patt TAB + TAB

它不起作用。为什么?我该如何解决这个问题?

来自评论的

UPD

$ complete -p perl
bash: complete: perl: no completion specification

$ complete -D -p
complete -F _completion_loader -D

$ type _perl
bash: type: _perl: not found

$ type _completion_loader
_completion_loader is a function
_completion_loader () 
{ 
    local compfile=./completions;
    [[ $BASH_SOURCE == */* ]] && compfile="${BASH_SOURCE%/*}/completions";
    compfile+="/${1##*/}";
    [[ -f "$compfile" ]] && . "$compfile" &> /dev/null && return 124;
    complete -F _minimal "$1" && return 124
}

1 个答案:

答案 0 :(得分:1)

我在Ubuntu 16.04上遇到同样的问题。我刚刚尝试使用Ubuntu 17.10,完成了perl -d te TAB + TAB 的完美工作。

因此最简单的解决方案是更新您的系统。如果您不能(或不想)这样做,您可以尝试为您的系统获取更新的包。对于Uubuntu,您可以在https://launchpad.net/~mail6543210/+archive/ubuntu/backports尝试PPA。或者您可以从http://bash-completion.alioth.debian.org/获取上游源,并完全取消您的发行版提供的bash-completion。