Для того, чтобы бежать, ssh-agent
я должен использовать
eval $(ssh-agent)
Почему я должен eval
на выходе ssh-agent
?
Почему он не предназначен для того, чтобы я мог его запустить?
Примечание: обратные галочки (`) удалены, поскольку они устарели. Вы можете прочитать об этом здесь, например .
man
страницу, для начала ...
ssh-agent
то, что «спроектировано таким образом», это unix / linux, потому что ssh-agent
запускается в дочернем процессе оболочки. Дочерние процессы не могут изменять родительские процессы. Но функция может: потому что она выполняется в текущем процессе. Таким образом , вы могли бы написать функцию: do_set_ssh_agent() { eval
SSH-агент , ; }
и что можно было бы работать просто как: $ do_set_ssh_agent
. Но «программы» (как правило) не устанавливаются как «функции» в linux / unix; вместо этого программы устанавливаются в виде файлов, которые, как уже упоминалось, выполняются в дочернем процессе. (Сценарии поиска являются исключением, но ssh-agent является двоичным.)