0

我试图从 Cocoa 程序启动的 NSTask /bin/sh 执行命令行工具(BBEdit 的“bbdiff”)。

这失败了,即使我可以从终端成功启动。

我追查了原因;bbdiff/usr/local/bin.

终端中使用的 PATH 是

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

但是 NSTask 启动的 bash shell 中使用的 PATH 只是

/usr/bin:/bin:/usr/sbin:/sbin

为什么有区别?我以为/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin是 UNIX 使用的正常路径

4

1 回答 1

0

正如 NSTask 文档所说(强调):

任务在由几个项目的当前值定义的环境中运行:当前目录、标准输入、标准输出、标准错误和任何环境变量的值。默认情况下,NSTask 对象从启动它的进程继承其环境。

因此,您的 NSTask 获取用于启动 Cocoa 应用程序的 PATH。

于 2012-12-10T18:02:11.563 回答