Когда я хочу запустить (или перезапустить) 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
- это функция fish с определением set -gx
, поэтому я предполагаю, что она устанавливает переменную как global
переменную и экспортирует ее. Я плохо разбираюсь в области действия переменных, так что же подходит для переменных ssh-agent
?
Для контекста я делаю это на основе инструкций в github. Я использовал ssh-ключ для github в течение многих лет и никогда не делал ssh-agent
или ssh-add
, но я заметил это при установке на новый компьютер. Также кажется, что os x запускает ssh-agent самостоятельно (или что-то еще, что я давно настраивал), потому что уже существует $SSH_AUTH_SOCK
. Так, может, бегать это не важно? ssh-add
работает без жалоб даже без запуска ssh-agent
.