在我的Cocoa应用程序中,我正在尝试使用
但是这没有任何效果。我需要在
编辑:感谢Dustin的提示,我在解决这个问题时有了一些进展。我使用
NSTask
运行一些基本的Git命令。每当我运行需要权限(SSH密钥)访问远程的命令(例如git push
, git pull
)时,它都会失败并显示以下错误:
Permission denied (publickey). The remote end hung up unexpectedly
从终端运行相同的命令完全正常,因此我认为这可能是NSTask
未设置环境变量的问题,在访问ssh密钥的过程中会使用该变量。我尝试手动设置HOME
和USER
环境变量,如下所示:
[task setEnvironment:[NSDictionary dictionaryWithObjectsAndKeys:NSHomeDirectory(), @"HOME", NSUserName(), @"USER", nil]];
但是这没有任何效果。我需要在
NSTask
中设置特定的环境变量才能使其正常工作吗?编辑:感谢Dustin的提示,我在解决这个问题时有了一些进展。我使用
env
命令列出了当前会话的环境变量,并找到了这个:SSH_AUTH_SOCK=/tmp/launch-DMQopt/Listeners
为了测试,我复制了这个路径并将其设置为NSTask
的环境变量,并再次运行代码,这次它成功了!话虽如此,我确定SSH_AUTH_SOCK
每个会话都会改变,所以我不能硬编码它。那么我该如何动态生成/检索这个变量呢?
env -i
,看看需要添加多少内容才能使其正常工作。 - Dustin