Mac の ssh-agent と fish shell

インフルエンザが周囲で大流行、最前線です。

Mac で fish shell を使っていると、linuxssh-agent 用に書いた設定でエラーが発生。 どうも Mac では SSH_AUTH_SOCK の場所が違うみたい。

探してみるとどうやら

/private/var/folders/fw/

にあるようなので、その時作られていた

/private/var/folders/fw/_tkなんとかかんとか/T/ssh/agent

SSH_AUTH_SOCK に設定するように暫定設定。 _tk なんとかの部分はもし変わるようなら対応しよう。

# ssh-agent
set agentPID (ps gxww | grep "ssh-agent]*\$" | awk '{print $1}') | head -1
set agentSOCK (/bin/ls -t /private/var/folders/fw/_tkなんとかかんとか/T/ssh*/agent*|head -1)
if test "$agentPID" = "" -o "$agentSOCK" = ""
    set -e SSH_AUTH_SOCK
    set -e SSH_AGENT_PID
    eval (ssh-agent)
    ssh-add
else
    set --export SSH_AGENT_PID $agentPID
    set --export SSH_AUTH_SOCK $agentSOCK
    # if [ `ssh-add -l` = "" ]; then
    #     ssh-add < /dev/null
    # fi
end

linux 用と Mac 用の切り分けが必要なので

~/.config/fish/config.fish

の中で

# 環境毎の設定読み込み ##########################################
switch (uname)
  case Darwin
    . $HOME/.config/fish/config_mac.fish
  case Linux
    . $HOME/.config/fish/config_gentoo.fish
end

なんてしてます。

Mac のディレクトリ、何がなんでどうなってるのかあんまり知らないなぁ……