Для того, щоб запустити, 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-агент є двійковим.)