无法使用launchctl setenv更改SSH_AUTH_SOCK


2

我想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


您是否尝试重新登录或重启?
Jakuje 2016年

@Jakuje是的,但重启后问题仍然存在。
Sora Minazuki 2016年

1
碰到完全相同的问题!我知道这是2年的问题,但你有没有设法解决它?这仍然存在于High Sierra。太奇怪了......即使苹果推出也没有像预期的那样在他们自己的操作系统上工作......
Drew

不幸的是,我无法找到直接的解决方案。但是,可以使用IdentityAgentSSH_CONFIG中选项解决此特定问题。
Sora Minazuki

Answers:


0

这主要是从这里的优秀文章中提取的。

您需要在~/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>

应该做的伎俩。


这是一种解决方法,但并没有真正回答如何在SSH_AUTH_SOCK系统范围内实际设置为任意值的具体问题。我很想知道答案。如上所述launchctl setenv,似乎不适用于该特定环境变量。
马修
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.