我创建了一个detach
脚本,作为以下内容的包装nohup
:
#!/bin/bash
/usr/bin/nohup "$@" &> /dev/null &
我想让 bash-completion 为这个脚本工作。
我尝试使用complete -c detach
,但对于所有参数,都有来自 的实用程序的添加PATH
。
如何为我的detach
实用程序正确实现 bash-completion?
答案1
既然你正在使用bash 完成,最简单的解决方案可能是询问它nohup
是如何完成的1:
$ complete -p nohup
complete -F _command nohup
然后将相同的完成配方应用于detach
:
$ complete -F _command detach
请参阅“我应该在哪里安装我自己的本地完成项?”在 bash 完成中常问问题查找最适合此命令的位置。
该_command
函数依次调用_command_offset
,即根据发表评论bash_completion
:
# sudo(8) 等命令的元命令完成函数,需要
首先完成命令,然后根据该命令自己的
完成定义完成。
1假设已 在其中获取了交互式shell。如果您使用 Arch Linux,正如您的评论似乎暗示的那样,默认情况下每个交互式 Bash 会话都是如此(来源)。bash
bash_completion
/etc/bash.bashrc
/usr/share/bash-completion/bash_completion