私のCocoaアプリケーションでは、NSTask
いくつかの基本的なGitコマンドを実行するために使用しようとしています。リモートにアクセスするためにアクセス許可(SSHキー)を必要とするコマンド(たとえばgit push
、git pull
)を実行すると、次のエラーで失敗します。
許可が拒否されました(公開鍵)。リモートエンドが予期せずハングアップしました
ターミナルから同じコマンドを実行すると問題なく動作するため、これは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
とは言うものの、セッションごとに変更されると確信しているので、ハードコーディングするだけでは不十分です。この変数を動的に生成/取得するにはどうすればよいですか?