launchctl setenv で SSH_AUTH_SOCK を変更できない

launchctl setenv で SSH_AUTH_SOCK を変更できない

OSX El Capitan システム上の別の場所にの値を設定したいですSSH_AUTH_SOCK。次のコマンドを実行してこれを試みました。

$ launchctl setenv SSH_AUTH_SOCK ~/.gnupg/S.gpg-agent.ssh

ただし、SSH_AUTH_SOCKターミナルを再起動した後でもデフォルト値が保持されます。

$ echo $SSH_AUTH_SOCK
/private/tmp/com.apple.launchd.XXXXXXXXXX/Listeners

SSH_AUTH_SOCKしかし興味深いことに、を使用しての値を照会するとlaunchctl、目的の結果が得られました。

$ launchctl getenv SSH_AUTH_SOCK
/Users/sora/.gnupg/S.gpg-agent.ssh

SSH_AUTH_SOCKシステム全体の値を正しく設定するにはどうすればよいですか?

編集:SSH_AUTH_SOCKシェルの起動ファイル (例~/.zshrc: /etc/zshrc、、/etc/zprofile)のいずれにも設定されていませんでした。

答え1

これは主に優れた投稿から抜粋したものですここ

~/Library/LaunchAgentsディレクトリ内に次の内容のplist ファイルを作成する必要があります。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>link-ssh-auth-sock</string>
  <key>ProgramArguments</key>
  <array>
    <string>/bin/sh</string>
    <string>-c</string>
    <string>/bin/ln -sf $HOME/.gnupg/S.gpg-agent.ssh $SSH_AUTH_SOCK</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

うまくいくはずです。

関連情報