Para correr ssh-agent
tengo que usar
eval $(ssh-agent)
¿Por qué tengo que eval
la 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 .
man
página, para empezar ...
ssh-agent
es que esté "diseñado de esta manera", es unix / linux, porque se ssh-agent
ejecuta 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.)