Pour courir ssh-agent
je dois utiliser
eval $(ssh-agent)
Pourquoi dois-je à eval
la sortie de ssh-agent
?
Pourquoi n'est-il pas conçu pour que je puisse simplement l'exécuter?
Remarque: Les Backticks (`) ont été supprimés car ils sont obsolètes. Vous pouvez en lire plus ici, par exemple .
man
page, pour commencer ...
ssh-agent
qui est "conçu de cette façon", c’est unix / linux, car il ssh-agent
s’exécute dans un processus enfant du shell. Les processus enfants ne peuvent pas modifier les processus parents. Mais une fonction peut: car elle s'exécute dans le processus en cours. Ainsi , vous pouvez écrire une fonction: do_set_ssh_agent() { eval
ssh-agent ; }
et qui pourrait être exécuté simplement: $ do_set_ssh_agent
. Mais les "programmes" ne sont pas (généralement) installés en tant que "fonctions" dans linux / unix; au lieu de cela, les programmes sont installés sous forme de fichiers qui, comme mentionné, s’exécutent dans un processus enfant. (Les scripts de sourcing sont une exception, mais ssh-agent est binaire.)