Zum laufen muss ssh-agent
ich benutzen
eval $(ssh-agent)
Warum muss ich eval
das ausgeben ssh-agent
?
Warum ist es nicht so konzipiert, dass ich es einfach ausführen kann?
Hinweis: Backticks (`) wurden entfernt, da sie veraltet sind. Hier können Sie zum Beispiel mehr darüber lesen .
man
Seite, für den Anfang ...
ssh-agent
dass es "so entworfen" ist, es ist Unix / Linux, weil es ssh-agent
in einem Kindprozess der Shell läuft. Untergeordnete Prozesse können übergeordnete Prozesse nicht ändern. Aber eine Funktion kann: weil sie im laufenden Prozess läuft. So könnten Sie eine Funktion schreiben: do_set_ssh_agent() { eval
ssh-agent ; }
und ausgeführt werden könnte einfach so: $ do_set_ssh_agent
. Aber "Programme" werden in Linux / Unix (normalerweise) nicht als "Funktionen" installiert. Stattdessen werden Programme als Dateien installiert, die wie erwähnt in einem untergeordneten Prozess ausgeführt werden. (Sourcing-Skripte sind eine Ausnahme, aber ssh-agent ist binär.)