我想将 的值设置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
但有趣的是,当我查询使用的值时launchctl
,我得到了想要的结果:
$ launchctl getenv SSH_AUTH_SOCK
/Users/sora/.gnupg/S.gpg-agent.ssh
如何正确设置SSH_AUTH_SOCK
系统范围的值?
编辑:SSH_AUTH_SOCK
未在任何 shell 启动文件中设置(例如~/.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>
应该可以奏效。