Slackware-current 上的 Libvirt 和 bash 完成:为什么域未完成?

Slackware-current 上的 Libvirt 和 bash 完成:为什么域未完成?

Slackware-current 上的情况非常奇怪。用libvirt-6.8.0源码编译。

让我们开始bash补全

virst st<TAB>
virsh start OK

virsh start --dom<TAB>
virsh start --domain OK

virsh start --domain <TAB>
Display all 235 possibilities? (y or n)

235种可能性?我只配置了 15 个域,235 个文件是我在 home 中的文件和目录,似乎 bash 完成无法完成域列表,其他命令(virsh domiflist、virsh dominfo、virsh domifaddr)可以很好地使用制表符完成。所有期望域列表。我尝试删除所有 libvirt 文件,然后重新安装 libvirt,但什么也没有...什么可以阻止我的域 bash 完成?

我尝试过调试 bash

set -x

运行命令

virsh start --domain ce<TAB>

+ local flag_all=1 array ret a b ifaces nwfilters files
+ COMPREPLY=()
+ cur=cen
+ prev=--domain
+++ virsh -h
+++ grep '^    '
+++ cut '-d ' -f5
+++ virsh -h
+++ cut -d= -f1
+++ grep '\--'
+++ cut '-d ' -f7
++ echo '-c
-d
-e
-h
-k

-K

-l
-q
-r
-t
-v
-V

attach-device
attach-disk
...
very long list of virsh commands
cd
echo
exit
help
pwd
quit
connect' '--connect
--debug
--escape
--help
--keepalive-interval
--keepalive-count
--log
--quiet
--readonly
--timing'
+ cmds='-c
-d
-e
-h
-k

-K

-l
-q
-r
-t
-v
-V

attach-device
...
very long list of virsh commands
echo
exit
help
pwd
quit
connect --connect
--debug
--escape
--help
--keepalive-interval
--keepalive-count
--log
--quiet
--readonly
--timing'
++ virsh help
++ grep '^    '
++ cut '-d ' -f5
+ cmds_help='attach-device
attach-disk
attach-interface
autostart
blkdeviotune
blkiotune
blockcommit
...very long list of virsh commands
cd
echo
exit
help
pwd
quit
connect'
+ case "$prev" in
++ _virsh_list_domains 1
++ local flag_all=1 flags
++ '[' 1 -eq 1 ']'
++ flags=--all
++ virsh -q list --all
++ cut '-d ' -f7
++ awk '{print $1}'
+ doms=
+ COMPREPLY=($(compgen -W "$doms" -- "$cur"))
++ compgen -W '' -- cen
+ return 0

答案1

找到解决方案。我认为 libvirt 读取完成

/usr/share/bash-completion/completions/vsh

但从“入侵者”旧文件中读取/etc/bash_completion.d/virsh_bash_completion

我解决了将此文件复制到 /etc/bash_completion.d/virsh_bash_completion

sudo cp  /usr/share/bash-completion/completions/vsh /etc/bash_completion.d/virsh_bash_completion

现在一切正常。

相关内容