Para correr ssh-agenttengo que usar
eval $(ssh-agent)
¿Por qué tengo que evalla salida de ssh-agent?
¿Por qué no está diseñado para que pueda ejecutarlo?
Nota: Los Backticks (`) se eliminan porque están en desuso. Puedes leer más sobre esto aquí, por ejemplo .
manpágina, para empezar ...
ssh-agentes que esté "diseñado de esta manera", es unix / linux, porque se ssh-agentejecuta en un proceso secundario del shell. Los procesos secundarios no pueden modificar los procesos principales. Pero una función puede: porque se ejecuta en el proceso actual. Por lo que podría escribir una función: do_set_ssh_agent() { eval ssh-agent ; }y que podría funcionar simplemente como: $ do_set_ssh_agent. Pero los "programas" no están (típicamente) instalados como "funciones" en Linux / Unix; en cambio, los programas se instalan como archivos, que, como se mencionó, se ejecutan en un proceso secundario. (Los scripts de aprovisionamiento son una excepción, pero ssh-agent es binario.)