無法使用 launchctl setenv 更改 SSH_AUTH_SOCK

無法使用 launchctl setenv 更改 SSH_AUTH_SOCK

我想將 的值設定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係統範圍的值?

編輯: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>

應該做到這一點。

相關內容