このメソッドが空の文字列を返す理由がわかりません:
- (NSString *)installedGitLocation {
NSString *launchPath = @"/usr/bin/which";
// Set up the task
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:launchPath];
NSArray *args = [NSArray arrayWithObject:@"git"];
[task setArguments:args];
// Set the output pipe.
NSPipe *outPipe = [[NSPipe alloc] init];
[task setStandardOutput:outPipe];
[task launch];
NSData *data = [[outPipe fileHandleForReading] readDataToEndOfFile];
NSString *path = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
return path;
}
@"git"
引数として渡す代わりに渡すと、期待どおり@"which"
に/usr/bin/which
返されます。したがって、少なくとも原則は機能します。
ターミナルから
$ which which
$ /usr/bin/which
$
$ which git
$ /usr/local/git/bin/git
だからそれはそこで動作します。
私が考えることができる唯一のことはwhich
、私の環境内のすべてのパスを検索していないということです.
これは私を夢中にさせています!誰にもアイデアはありますか?
編集: これは、NSTask によって正しい環境 ($PATH) が認識されるように、NSTask またはユーザーのシェル (例: ~/.bashrc) をセットアップすることに関するものです。