Per correre ssh-agent
devo usare
eval $(ssh-agent)
Perché devo eval
l'output di ssh-agent
?
Perché non è progettato in modo da poterlo semplicemente eseguire?
Nota: i backtick (`) rimossi mentre vengono deprecati. Puoi leggere di più qui ad esempio qui .
man
pagina, per cominciare ...
ssh-agent
è "progettato in questo modo", è unix / linux, perché ssh-agent
viene eseguito in un processo figlio della shell. I processi figlio non possono modificare i processi padre. Ma una funzione può: perché viene eseguita nel processo corrente. Così si potrebbe scrivere una funzione: do_set_ssh_agent() { eval
ssh-agent ; }
e che potrebbe essere gestito semplicemente come: $ do_set_ssh_agent
. Ma i "programmi" non sono (tipicamente) installati come "funzioni" in linux / unix; invece, i programmi vengono installati come file che, come detto, vengono eseguiti in un processo figlio. (Gli script di sourcing sono un'eccezione, ma ssh-agent è binario.)