Shell
為什麼要評估 ssh-agent 的輸出?
為了執行,
ssh-agent
我必須使用:eval $(ssh-agent)
為什麼需要
eval
輸出ssh-agent
?為什麼我不能執行它?
ssh-agent
輸出您需要連接到它的環境變數:shadur@proteus:~$ ssh-agent SSH_AUTH_SOCK=/tmp/ssh-492P67qzMeGA/agent.7948; export SSH_AUTH_SOCK; SSH_AGENT_PID=7949; export SSH_AGENT_PID; echo Agent pid 7949; shadur@proteus:~$
通過呼叫
eval
您立即將這些變數載入到您的環境中。至於為什麼不能自己
ssh-agent
這樣做……注意這個詞的選擇。不是“不會”、“不能”。在 Unix 中,程序只能修改自己的環境變數,並將它們傳遞給子程序。它不能修改其父程序的環境,因為系統不允許。這是非常基本的安全設計。你可以
eval
通過使用ssh-agent utility
whereutility
is your login shell、你的視窗管理器或任何其他需要設置 SSH 環境變數的東西來解決這個問題。手冊中也提到了這一點。