В моем приложении Какао я пытаюсь использовать NSTask
для запуска некоторых основных команд Git.Всякий раз, когда я запускаю команду, которой требуются разрешения (ключи SSH) для доступа к удаленному устройству (например, git push
, git pull
), происходит сбой со следующей ошибкой:
В доступе отказано (publickey).Удаленный конец неожиданно зависает
Выполнение тех же команд из Терминала работает просто отлично, поэтому я думаю, что это может быть проблемой, если NSTask
не задает переменную среды, которая будет использоваться где-тов процессе доступа к ключам SSH.Я попытался вручную установить переменные окружения HOME
и USER
следующим образом:
[task setEnvironment:[NSDictionary dictionaryWithObjectsAndKeys:NSHomeDirectory(), @"HOME", NSUserName(), @"USER", nil]];
Но это не имеет никакого эффекта.Есть ли какая-то конкретная переменная окружения, которую я должен установить в NSTask
, чтобы это работало должным образом?
РЕДАКТИРОВАТЬ: Благодаря совету Дастина, я получил немного больше, чтобы выяснить это.Я использовал команду env
, чтобы вывести список переменных среды для моего текущего сеанса, и обнаружил следующее:
SSH_AUTH_SOCK=/tmp/launch-DMQopt/Listeners
Чтобы проверить, я скопировал этот путь и установил его в качестве переменной среды NSTask
и запустилкод снова, и на этот раз это сработало!Тем не менее, я уверен, что SSH_AUTH_SOCK
меняется для каждой сессии, поэтому я не могу просто жестко закодировать его.Как мне динамически генерировать / извлекать эту переменную?