実行するssh-agent
には、使用する必要があります
eval $(ssh-agent)
なぜeval
出力する必要があるのssh-agent
ですか?
なぜ実行できるように設計されていないのですか?
注:推奨されていないため、バックティック( `)は削除されました。たとえば、ここで詳細を読むことができます。
evalを使用する必要があると言うのは誰ですか?これは何を決定するのですか?もう少しコンテキストが役立ちます。
—
0xSheepdog
@ 0xSheepdogの
—
jasonwryan
man
ページ、はじめに...
ユースケースはマニュアルページに文書化されているようです。「なぜそれが特定の方法で設計されている」 ... 肩をすくめるを。
—
-0xSheepdog
繰り返しますが、シェルの子プロセスで実行される
—
マイケル
ssh-agent
ため、「このように設計されている」のではなく、unix / linux ssh-agent
です。子プロセスは親プロセスを変更できません。ただし、関数は次のことができます。現在のプロセスで実行されるためです。したがって、関数do_set_ssh_agent() { eval
ssh-agent ; }
を書くことができ、それは単純に:として実行できます$ do_set_ssh_agent
。ただし、「プログラム」は(通常)linux / unixに「関数」としてインストールされません。代わりに、プログラムはファイルとしてインストールされ、前述のように、子プロセスで実行されます。(スクリプトの調達は例外ですが、ssh-agentはバイナリです。)