在我的Cocoa应用程序中,我试图使用NSTask
来运行一些基本的Git命令。每当我运行需要的权限(SSH密钥)命令来访问远程(例如git push
,git pull
)时,出现以下错误:NSTask和Git - 权限问题
Permission denied (publickey). The remote end hung up unexpectedly
运行相同的命令,从终端工作得很好,所以我m认为这可能是一个问题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
每个会话都有变化,所以我不能对它进行硬编码。我如何动态生成/检索这个变量?
尝试另一种方式,在命令行中使用'env -i'并查看在需要加载之前需要添加多少。 – Dustin 2011-06-03 04:25:25
得到了一点进一步感谢您的提示,阅读我编辑过的文章:) – indragie 2011-06-03 04:49:49