[Bash-completion-devel] [PATCH] ssh: Don't complete hosts found after Hostname keyword
Uwe Kleine-König
uwe+debian at kleine-koenig.org
Mon Dec 22 10:04:48 UTC 2014
From: Uwe Kleine-König <uwe at kleine-koenig.org>
If there are set some configurations for a host it's activated when a
match on "Host" occurs, but not on "Hostname". If for example the
configuration contains
Host machine.sd
Hostname machine.some.domain
User sduser
then the specified user is only used when running
$ ssh machine.sd
but not when running
$ ssh machine.some.domain
. So while machine.some.domain maybe is a valid hostname to connect to,
the user's indention on
$ ssh machin<tab>
is probably using the configured user and so completing
"machine.some.domain" doesn't make sense.
Just in case this is wrong and someone still wants both names, it's
still possible to add a line
Host machine.some.domain
to the configuration to get the previous behaviour.
Fixes: http://bugs.debian.org/689585
---
bash_completion | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/bash_completion b/bash_completion
index 8c9fc81..92b950b 100644
--- a/bash_completion
+++ b/bash_completion
@@ -1565,7 +1565,8 @@ _known_hosts_real()
# append any available aliases from config files
if [[ ${#config[@]} -gt 0 && -n "$aliases" ]]; then
- local hosts=$( sed -ne 's/^['"$'\t '"']*[Hh][Oo][Ss][Tt]\([Nn][Aa][Mm][Ee]\)\{0,1\}['"$'\t '"']\{1,\}\([^#*?%]*\)\(#.*\)\{0,1\}$/\2/p' "${config[@]}" )
+ local hosts=$( sed -ne 's/^['"$'\t '"']*[Hh][Oo][Ss][Tt]['"$'\t '"']\{1,\}\([^#*?%]*\)\(#.*\)\{0,1\}$/\1/p' "${config[@]}" )
+
COMPREPLY+=( $( compgen -P "$prefix$user" \
-S "$suffix" -W "$hosts" -- "$cur" ) )
fi
--
2.1.3
More information about the Bash-completion-devel
mailing list