Коли я хочу запустити (або перезапустити) ssh-agent, він дає мені кілька команд, які я повинен виконувати, виконуючи eval $(ssh-agent). Звичайно, це не вдається для риби, оскільки дає синтаксис bash або csh.
Команди виглядають так:
SSH_AUTH_SOCK=/var/folders/v4/c116f_790t7g58lh3jbr7_vm0000gq/T//ssh-L95xhmGl9FZo/agent.36846; export SSH_AUTH_SOCK;
SSH_AGENT_PID=36847; export SSH_AGENT_PID;
echo Agent pid 36847;
або для csh:
setenv SSH_AUTH_SOCK /var/folders/v4/c116f_790t7g58lh3jbr7_vm0000gq/T//ssh-Tf8etHZfP9k3/agent.36873;
setenv SSH_AGENT_PID 36874;
echo Agent pid 36874;
Версія csh працює без нарікань, коли я це роблю eval (ssh-agent -c), а потім echo $SSH_AGENT_PID $SSH_AUTH_SOCKдає очікуваний результат. Однак нові оболонки не зберігають цих змінних. Що робить setenv? Очевидно, це setзмінні якось, але це ніде в документації. Якщо я запускаю новий термінал, змінні втрачаються, тому я не впевнений, що вони експортуються?
Я щойно виявив, що setenvце функція риби з визначенням set -gx, тому я припускаю, що вона встановлює змінну як globalзмінну та експортує її. Я не дуже добре розумію область змінної, тож чи відповідна річ для ssh-agentзмінних?
Для контексту я роблю це, грунтуючись на інструкціях в github . Я використовував ключ ssh для github роками і ніколи не робив цього ssh-agentчи іншого ssh-add, але помітив це під час налаштування на новому комп’ютері. Також здається, що os x запускає ssh-агент самостійно (або щось інше, яке я створив давно в минулому), оскільки воно $SSH_AUTH_SOCKвже існує . То, може, запустити це не важливо? ssh-addпрацює без скарги навіть без запуску ssh-agent.
functions setenv, дивіться мою редагування. typeприємно, хоча. Здається, це якесь поєднання whichі functions.
type setenv