2016-11-18 80 views
1

在我的系统之一,bash的可编程完成工程基本命令是这样的:如何为命令行开关启用Bash可编程完成?

$ ls -l t/ 
01_createTicket/    02_methods.t 
[etc...] 

但是,它并没有为交换机在我的自定义命令的工作:

$ ./test_all.pl --environment=test --verbosity=1 --test=t/ 
[will not autocomplete; does not show contents of directory] 

在所有我的其他系统,第二个例子起作用。

我需要在我的系统上做些什么调整才能在这样的长命令结束时启用bash完成?

+0

“one”和“all other”系统有什么区别?首先查找bash版本,'.bashrc'内容和'set'选项的差异。 **另外**在每台机器上运行'complete -p'并比较,看看有什么不同。 – cxw

+0

$:bash --version,GNU bash,版本4.2.46(1) - 释放(x86_64-redhat-linux-gnu)在所有系统上。我的非工作系统有一堆完整的输出-p,我的工作系统不会为该命令提供任何输出。 – Marcus

+1

尝试在非工作系统上运行'complete -r'以使其与正在工作的系统匹配(每[this](https://blog.onetechnical.com/2012/06/19/disable-bash-autocompletion-on -ubunt /)) – cxw

回答

2

因为你的非工作系统具有自动完成条目你的工作系统不行,因为你在complete -p输出看到,非工作系统上运行complete -r以清除完成条目(source)。

编辑完井可以在任何启动文件的加载:/etc/profile~/.bash_profile~/.bash_login,或~/.profile。它们按照该顺序进行测试(bash(1), section "Invocation")。我怀疑你的/etc/profile正在加载完成,这就是为什么你需要.bash_profile中的complete -r来清除它们。

+0

这是工作,但有一点需要注意....运行'完成-r'只会删除自动完成条目(从而使其工作更好不要问我为什么),因此我在''.bash_profile'中放置了'complete -r'。好奇,如果有人知道这个没有'.bash_profile'条目的永久修复。 – Marcus

+0

@马库斯谢谢!编辑。 – cxw