From 2bd29c3172bb87e447450b8b2034b4dd868fd97c Mon Sep 17 00:00:00 2001 From: Koichi Murase Date: Wed, 4 Jun 2025 12:27:30 +0900 Subject: [PATCH] [bash,zsh] Support "=" after "Hostname" and "Host" in ~/.ssh/config In ~/.ssh/config, "=" can also be used as a separator between the field name and the value. The current master does not properly handle this and generate a hostname "=" or one starting with "=". This patch correctly handles it. --- shell/completion.bash | 8 ++++++-- shell/completion.zsh | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/shell/completion.bash b/shell/completion.bash index 48a34c9b..044a35f6 100644 --- a/shell/completion.bash +++ b/shell/completion.bash @@ -494,8 +494,12 @@ if ! declare -F __fzf_list_hosts > /dev/null; then shopt -s nullglob __fzf_exec_awk ' - tolower($1) ~ /^host(name)?$/ { - for (i = 2; i <= NF; i++) + # Note: mawk <= 1.3.3-20090705 does not support the POSIX brackets of + # the form [[:blank:]], and Ubuntu 18.04 LTS still uses this + # 16-year-old mawk unfortunately. We need to use [ \t] instead. + match(tolower($0), /^[ \t]*host(name)?[ \t]*[ \t=]/) { + $0 = substr($0, RLENGTH + 1) # Remove "Host(name)?=?" + for (i = 1; i <= NF; i++) if ($i !~ /[*?%]/) print $i } diff --git a/shell/completion.zsh b/shell/completion.zsh index 950fa674..0f20812a 100644 --- a/shell/completion.zsh +++ b/shell/completion.zsh @@ -272,8 +272,12 @@ if ! declare -f __fzf_list_hosts > /dev/null; then setopt GLOB NO_DOT_GLOB CASE_GLOB NO_NOMATCH NULL_GLOB __fzf_exec_awk ' - tolower($1) ~ /^host(name)?$/ { - for (i = 2; i <= NF; i++) + # Note: mawk <= 1.3.3-20090705 does not support the POSIX brackets of + # the form [[:blank:]], and Ubuntu 18.04 LTS still uses this + # 16-year-old mawk unfortunately. We need to use [ \t] instead. + match(tolower($0), /^[ \t]*host(name)?[ \t]*[ \t=]/) { + $0 = substr($0, RLENGTH + 1) # Remove "Host(name)?=?" + for (i = 1; i <= NF; i++) if ($i !~ /[*?%]/) print $i }