본문 바로가기

IT

zsh 에서 ssh completion 이 ~/.ssh/config 을 참조하지 않는 경우

반응형

bash 에서 ssh 이후 탭키를 누르면 .ssh 폴더 하위의 config 와 known_hosts 파일의 host 주소를 나열해 주었는데, zsh 에서는 정상적으로 작동하지 않고, 좀.... 이상하게 작동한다.

 

자신의 .zshrc 파일에 아래와 같은 내용을 추가하고 ssh 탭을 눌러보면 bash 와 동일한 completion 을 얻을 수 있다.

 

h=()
if [[ -r ~/.ssh/config ]]; then
  h=($h ${${${(@M)${(f)"$(cat ~/.ssh/config)"}:#Host *}#Host }:#*[*?]*})
fi
if [[ -r ~/.ssh/known_hosts ]]; then
  h=($h ${${${(f)"$(cat ~/.ssh/known_hosts{,2} || true)"}%%\ *}%%,*}) 2>/dev/null
fi
if [[ $#h -gt 0 ]]; then
  zstyle ':completion:*:ssh:*' hosts $h
  zstyle ':completion:*:slogin:*' hosts $h
fi

 

끝.

반응형