Per correre ssh-agentdevo usare
eval $(ssh-agent)
Perché devo evall'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 .
manpagina, per cominciare ...
ssh-agentè "progettato in questo modo", è unix / linux, perché ssh-agentviene 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.)