Untuk menjalankan ssh-agent
saya harus menggunakan
eval $(ssh-agent)
Kenapa saya harus eval
output ssh-agent
?
Mengapa tidak dirancang agar saya bisa menjalankannya?
Catatan: Backticks (`) dihapus karena sudah tidak digunakan lagi. Anda dapat membaca lebih lanjut tentang hal ini di sini .
man
halaman, untuk permulaan ...
ssh-agent
yang "dirancang dengan cara ini", itu unix / linux, karena ssh-agent
berjalan dalam proses anak dari shell. Proses anak tidak dapat mengubah proses induk. Tetapi fungsi dapat: karena berjalan dalam proses saat ini. Jadi Anda bisa menulis fungsi: do_set_ssh_agent() { eval
ssh-agent ; }
dan yang bisa dijalankan hanya sebagai: $ do_set_ssh_agent
. Tetapi "program" tidak (biasanya) diinstal sebagai "fungsi" di linux / unix; sebaliknya, program diinstal sebagai file, yang, sebagaimana disebutkan, dijalankan dalam proses anak. (Sumber skrip adalah pengecualian, tetapi ssh-agent adalah biner.)