Невозможно изменить SSH_AUTH_SOCK с помощью launchctl setenv

Невозможно изменить SSH_AUTH_SOCK с помощью launchctl setenv

Я хочу установить значение SSH_AUTH_SOCKв другом месте в системе OSX El Capitan. Я попытался сделать это, выполнив следующую команду:

$ 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_SOCKusing launchctl, я получаю желаемый результат:

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

SSH_AUTH_SOCKКак правильно установить общесистемное значение ?

EDIT: SSH_AUTH_SOCKне был установлен ни в одном из файлов запуска оболочки (например ~/.zshrc, /etc/zshrc, , /etc/zprofile)

решение1

Это в основном взято из превосходного постаздесь.

Вам необходимо создать в своем каталоге файл plist ~/Library/LaunchAgentsсо следующим содержимым.

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

Должно сработать.

Связанный контент