Não é possível alterar SSH_AUTH_SOCK com launchctl setenv

Não é possível alterar SSH_AUTH_SOCK com launchctl setenv

Quero definir o valor SSH_AUTH_SOCKpara um local diferente em um sistema OSX El Capitan. Tentei fazer isso executando o seguinte comando:

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

No entanto, SSH_AUTH_SOCKainda mantém o valor padrão mesmo depois de reiniciar o terminal:

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

Mas curiosamente, quando consulto o valor de SSH_AUTH_SOCKusing launchctl, obtenho o resultado desejado:

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

Como posso definir corretamente o valor de SSH_AUTH_SOCKtodo o sistema?

EDIT: SSH_AUTH_SOCKnão foi definido em nenhum dos arquivos de inicialização do shell (por exemplo ~/.zshrc, /etc/zshrc, /etc/zprofile)

Responder1

Isso é extraído principalmente da excelente postagemaqui.

Você precisa criar um arquivo plist em seu ~/Library/LaunchAgentsdiretório com o seguinte conteúdo.

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

Deve resolver o problema.

informação relacionada