Description: The bash-completion function for virsh, which is defined in /usr/share/bash-completion/completions/virsh (generated from libvirt tools/bash-completion/vsh.in), overwrites the shell variables "IFS" and "word" on query for completions. Repeat-By: I am testing it with Fedora 35 Workstation where the completion script is provided by the package: libvirt-client-7.6.0-3.fc35.x86_64 With a Bash session with bash-completion loaded, one can observe the change of Bash behavior after the attempt of the completion for "virsh" command as follows: $ declare -p IFS | cat -A declare -- IFS=" ^I$ "$ $ virsh a[TAB][TAB] allocpages attach-device attach-disk attach-interface autostart $ virsh a[C-c] $ declare -p IFS | cat -A declare -- IFS="$ "$ Originally the value of IFS is IFS=$' \t\n', but it becomes IFS=$'\n' after the attempt of the completion. After that, word splitting of the shell will not be processed as normal: $ a='a b c' $ printf '<%s>\n' $a <a> <b> <c> $ virsh a[TAB][TAB][C-c] $ printf '<%s>\n' $a <a b c> The shell variable "word" is also affected by the virsh completion. Fix: The completion function "_virsh_complete" should declare "IFS" and "word" as local variables before changing them. Reference: I initially received the related issue in my project at https://github.com/akinomyoga/ble.sh/issues/147 -- Koichi Koichi Murase (1): bash-completion: fix variable leaks of "IFS" and "word" tools/bash-completion/vsh.in | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) -- 2.21.3