Para rodar ssh-agent
eu tenho que usar
eval $(ssh-agent)
Por que eu tenho que eval
a saída de ssh-agent
?
Por que não foi projetado para que eu possa executá-lo?
Nota: Backticks (`) removidos porque estão sendo descontinuados. Você pode ler mais sobre isso aqui, por exemplo .
man
página, para começar ...
ssh-agent
é que seja "projetado dessa maneira", é unix / linux, porque ssh-agent
é executado em um processo filho do shell. Os processos filho não podem modificar os processos pai. Mas uma função pode: porque é executada no processo atual. Então, você poderia escrever uma função: do_set_ssh_agent() { eval
ssh-agent ; }
e que poderia ser executado simplesmente como: $ do_set_ssh_agent
. Mas "programas" não são (normalmente) instalados como "funções" no linux / unix; em vez disso, os programas são instalados como arquivos que, como mencionado, são executados em um processo filho. (Fonte de scripts é uma excepção, mas ssh-agente é binária.)