Для того, чтобы бежать, 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 является двоичным.)