我的应用程序使用 NSTask 执行 shell 脚本,其中一个脚本启动 X11 应用程序(特别是meld
)。
我原以为这会起作用:
#!/bin/bash
source ~/.profile # setup $PATH/etc
meld .
但它失败了:
gtk.icon_theme_get_default().append_search_path(meld.paths.icon_dir())
Traceback (most recent call last):
File "/usr/local/bin/meld", line 132, in <module>
gtk.icon_theme_get_default().append_search_path(meld.paths.icon_dir())
AttributeError: 'NoneType' object has no attribute 'append_search_path'
作为概念证明,我将脚本更改为此,效果很好:
#!/usr/bin/ruby
exec 'osascript -e \'tell app "Terminal" to do script "meld ' + Dir.pwd + '" in front window\''
有谁是造成问题的原因?这是我执行shell脚本的代码:
NSTask *task = [[NSTask alloc] init];
task.launchPath = self.scriptURL.path;
task.standardOutput = [NSPipe pipe];
task.currentDirectoryPath = workingDirectoryURL.path;
[task launch];