gpt4 book ai didi

macos - NSProcessInfo 返回与 "echo $PATH"不同的路径

转载 作者:行者123 更新时间:2023-12-03 17:12:21 25 4
gpt4 key购买 nike

我试图以编程方式确定系统路径中是否存在特定的二进制文件。为了获得环境,我使用了两者

NSString* path = [[[NSProcessInfo processInfo] environment] objectForKey:@"PATH"];

NSString* path2 = [NSString stringWithUTF8String: getenv("PATH")];

两者都会产生相同的结果,但在两种情况下都与控制台中的 echo $PATH 不同。 pathpath2 都不包含通过 /etc/paths.d 设置的路径,所以问题是如何获取环境 PATH以编程方式从控制台返回?

最佳答案

NSProcessInfo 将仅访问有关当前进程的信息。例如,下面我在 cocoa 中执行相同的 echo $PATH 命令,并得到与 NSProcessInfo 显示的相同输出。所以在终端中执行相同的命令时。你会得到不同的输出。因为它显示的是当前进程在终端中的路径。如果您想看到两者相同的输出,可以在终端 launchctl getenv PATH 中执行此命令,该命令相当于 [[[NSProcessInfo processInfo]environment] objectForKey:@"PATH"];

NSTask *task;
task = [[NSTask alloc] init];
[task setLaunchPath: @"/bin/bash"];
[task setArguments:[NSArray arrayWithObjects: @"-c", @"echo $PATH",nil]];
NSPipe *pipe;
pipe = [NSPipe pipe];
[task setStandardOutput: pipe];

NSFileHandle *file;
file = [pipe fileHandleForReading];

[task launch];

NSData *data;
data = [file readDataToEndOfFile];
NSString *response = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
NSLog(@"%@",response);

关于macos - NSProcessInfo 返回与 "echo $PATH"不同的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19038364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com