No se puede cambiar SSH_AUTH_SOCK con launchctl setenv

No se puede cambiar SSH_AUTH_SOCK con launchctl setenv

Quiero establecer el valor de SSH_AUTH_SOCKen una ubicación diferente en un sistema OSX El Capitan. Intenté hacerlo ejecutando el siguiente comando:

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

Sin embargo, SSH_AUTH_SOCKtodavía mantiene el valor predeterminado incluso después de reiniciar el terminal:

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

Pero, curiosamente, cuando consulto el valor de SSH_AUTH_SOCKusar launchctl, obtengo el resultado deseado:

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

¿Cómo puedo establecer correctamente el valor de SSH_AUTH_SOCKtodo el sistema?

EDITAR: SSH_AUTH_SOCKno se configuró en ninguno de los archivos de inicio del shell (por ejemplo ~/.zshrc, /etc/zshrc, /etc/zprofile)

Respuesta1

Esto se extrae principalmente de la excelente publicación.aquí.

Debe crear un archivo plist en su ~/Library/LaunchAgentsdirectorio con el siguiente contenido.

<?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>

Debería funcionar.

información relacionada