tmux+zsh で SSH_AUTH_SOCK を手軽に更新する

エージェントフォワーディングを有効にしてログインした先で tmux にアタッチした際、既存のシェルの SSH_AUTH_SOCK が更新されません。
これを、ショートカットキーで手軽に更新する方法です。

以下を .zshrc あたりに書いておくと、アタッチした後 Alt+s するだけで、SSH_AUTH_SOCK が更新されます。

if [ -n "${TMUX}" ]; then
  # 既存のシェルの SSH_AUTH_SOCK を更新
  function update_ssh_auth_sock() {
    NEWVAL=`tmux show-environment | grep "^SSH_AUTH_SOCK" | cut -d"=" -f2`
    if [ -n "${NEWVAL}" ]; then
      SSH_AUTH_SOCK=${NEWVAL}
    fi
  }

  # widget 化する
  zle -N update_ssh_auth_sock

  # ショートカットキー割り当て
  bindkey "^[s" update_ssh_auth_sock
fi