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