
我想將 的值設定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>
應該做到這一點。