ssh-agent
を実行するには、
eval $(ssh-agent)
ssh-agent
の出力をeval
する必要があるのはなぜですか?
実行できるように設計されていないのはなぜですか?
注:バッククォート( `)は廃止されるため削除されました。あなたはすることができます 例えば、ここでそれについての詳細を読んでください 。
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
がそれ自体を実行できない理由については、Wordの選択に注意してください。 「できない」ではない、「できない」。 Unixでは、プロセスは自身の環境変数のみを変更し、それらを子に渡すことができます。 できないシステムが許可しないため、親プロセスの環境を変更します。これはかなり基本的なセキュリティ設計です。
eval
は、ssh-agent utility
を使用して回避できます。ここで、utility
は、ログインシェル、ウィンドウマネージャー、またはSSH環境変数を設定するために必要なものです。これはマニュアルにも記載されています。