![Невозможно изменить SSH_AUTH_SOCK с помощью launchctl setenv](https://rvso.com/image/1505678/%D0%9D%D0%B5%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%20%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20SSH_AUTH_SOCK%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20launchctl%20setenv.png)
Я хочу установить значение 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_SOCK
using 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>
Должно сработать.